tcp nettyクライアントのFrameDecoder.decode()のコーディングで問題が発生しています。
protected Object decode(ChannelHandlerContext ctx, Channel channel,
ChannelBuffer buffer) throws Exception {
上記の署名では、バッファにはフレーム化する必要のあるバイトが含まれているはずです。しかし、なぜオブジェクトを返す必要があるのでしょうか。返されたオブジェクトがnullの場合、これはこのバッファにさらに多くのデータが必要であることを示していますが、部分フレームの未読バイトを含むバッファを返すとどうなりますか?これは、より多くのバイトが追加された状態で呼び出されますか?
の特定の呼び出しにdecode()
100バイトのバッファがあるとします。この100のうち、25バイトと55バイトの2つの完全なフレームと、20バイトの部分的なフレームがあります。最初のフルフレーム(25バイト)を読み取ってバッファ(75バイトを含む-55バイトのフルフレーム1つと部分フレームの別の20バイト)を返すことはできますか?これにより、次にデコードが呼び出されたときにバイトが上書きされますか?または、次の呼び出しで次のフレーム(55バイト)を読み取っても大丈夫ですか?