1

タイプ「xx bytecount sid newline payload」および「xx 000 sid newline」のメッセージを処理したい。文字列エンコーダーとデコーダーを使用していました。残念ながら、それは最初のものと一致しません。カスタム デコーダーを記述して動的バッファーを作成し、ペイロードのバイト カウントを満たすまでデータを挿入し続けることができることを知っています。しかし、カスタム エンコーダーが正常にヒットした場合、文字列エンコーダーとデコーダーをスキップするにはどうすればよいですか。

もう 1 つ質問があります。カスタム デコーダーで残りのバイト数を読み取るにはどうすればよいですか。カウントを読み取ることができるとします。それを状態変数として設定して、さらにデータを読み取るにはどうすればよいですか

4

1 に答える 1

3

私があなたなら、両方のメッセージ タイプをデコードする単一のデコーダを作成するだけです。パイプラインに複数のデコーダーを保持することを主張する場合は、それも可能です。

最初に、最初のメッセージ タイプ (xxx バイトカウント ...) をデコードするデコーダーをパイプラインに挿入します。

次に、2 番目のメッセージ タイプが検出されたときに、デコーダが爆発しないようにプログラムします。理解できないメッセージ タイプについては、メッセージを次のハンドラに転送するだけにします。次に、2 番目のメッセージ タイプをデコードする 2 番目のデコーダがそれをデコードします。

3 番目に、2 番目のメッセージ タイプ (xxx 000 ...) をデコードする 2 番目のデコーダをプログラムし、受信したメッセージが最初のデコーダによってデコードされたメッセージかどうかをチェックします。その場合、2 番目のデコーダーはメッセージを逐語的に次のハンドラーに転送する必要があります。

于 2013-01-03T06:35:42.427 に答える