if (this.numRequestedBuffers > this.numDesignatedBuffers) {
this.globalBufferPool.returnBuffer(buffer);
this.numRequestedBuffers--;
} else if (!this.listeners.isEmpty()) {
Buffer availableBuffer = new Buffer(buffer, buffer.size(), this.recycler);
try {
this.listeners.poll().bufferAvailable(availableBuffer);
} catch (Exception e) {
this.buffers.add(buffer);
this.buffers.notify();