0

いくつかの変換を持ついくつかの長いパイプを持つプログラムがあります。

例えば

socket.pipe(ta).pipe(tb).pipe(tc);
...
tc.pipe(other_socket);

メタデータをパイプに追加/パイプから読み取る最良の方法は何ですか?

例:taパケットを蓄積し、行に分割します。 tb発信元の IP アドレス (存在する場合) に基づくデータを各行にプレフィックスとして付ける必要があります。

入力からをtb取得するにはどうすればよいですか?remoteAddress

ここには、プロトタイプの継承といくつかの類似点があるようです。つまり、 (プロパティを欠いている)をtb尋ねてから(プロパティを持っている)を尋ねる必要があります。tatasocket

他のより複雑ではあるが類似の問題があるため、パイプからメタデータを追加および読み取るための一般的なアプローチを探しています。

meta現在、プロパティを持つオブジェクトで構成される「オブジェクト ストリーム」を使用して、この問題を解決していpayloadます。各変換は、その作業を行う必要がpayloadあり、ほとんどはそのままにしておきmetaます。このソリューションは醜いです。特に、プレーンなバッファーや文字列ではなく、これらの拡張オブジェクトの xnetように見えるが生成する新しいモジュールを作成する必要があったためです。net

(Haskeller は、このソリューションをモナドとして認識するかもしれません。そこでは、私が使用するほとんどのストリーム変換を「メタ」モナドに持ち上げています。私はまだ Haskell を学んでいるので、この観察は正しくない可能性があります。)

4

2 に答える 2