Package jp.ameba.mongo.protocol

Examples of jp.ameba.mongo.protocol.MessageHeader


    request.encode(encoder);
    // 最終位置からサイズを特定
    int end = output.getPosition();
    int size = end - start;
    // ヘッダにサイズを設定
    MessageHeader header = request.getHeader();
    header.setMessageLength(size);
    // 開始位置まで戻る
    output.setPosition(start);
    // ヘッダ内容を出力
    header.encode(output);
    // 最終位置に戻る
    output.setPosition(end);
  }
View Full Code Here


  protected Object decode(
      ChannelHandlerContext context,
      Channel channel,
      ChannelBuffer buffer) throws Exception {
   
    MessageHeader header = (MessageHeader) context.getAttachment();
    if (header == null) {
      header = new MessageHeader();
      context.setAttachment(header);
    }

    // ヘッダー情報が存在しない場合は、ヘッダー情報を読み込む
    if (!header.isReady()) {
      if (buffer.readableBytes() < MessageHeader.HEADER_SIZE) {
        return null;
      }
      header.read(buffer);
    }
   
    // バッファーが不足している場合は、次の読み込みまで待つ
    if (buffer.readableBytes() + 16 < header.getMessageLength()) {
      return null;
    }
   
    // 現時点で、 OP_REPLY 以外のメッセージは受け付けていない
    if (header.getOpCode() != OperationCode.OP_REPLY) {
      throw new MongoException("OP_CODE is not available in server response.");
    }
   
    // ボディ部分の読み取り
    Response response = new Response(header);
View Full Code Here

TOP

Related Classes of jp.ameba.mongo.protocol.MessageHeader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.