コード例 #1
0
ファイル: MMOConnection.java プロジェクト: namlehong/ertheia
  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;
      }
    }
  }