protected void createWriteBuffer(ByteBuffer buf) { if (_primaryWriteBuffer == null) { _primaryWriteBuffer = _selectorThread.getPooledBuffer(); _primaryWriteBuffer.put(buf); } else { ByteBuffer temp = _selectorThread.getPooledBuffer(); temp.put(buf); int remaining = temp.remaining(); _primaryWriteBuffer.flip(); int limit = _primaryWriteBuffer.limit(); if (remaining >= _primaryWriteBuffer.remaining()) { temp.put(_primaryWriteBuffer); _selectorThread.recycleBuffer(_primaryWriteBuffer); _primaryWriteBuffer = temp; } else { _primaryWriteBuffer.limit(remaining); temp.put(_primaryWriteBuffer); _primaryWriteBuffer.limit(limit); _primaryWriteBuffer.compact(); _secondaryWriteBuffer = _primaryWriteBuffer; _primaryWriteBuffer = temp; } } }