いくつかの変換を持ついくつかの長いパイプを持つプログラムがあります。
例えば
socket.pipe(ta).pipe(tb).pipe(tc);
...
tc.pipe(other_socket);
メタデータをパイプに追加/パイプから読み取る最良の方法は何ですか?
例:ta
パケットを蓄積し、行に分割します。 tb
発信元の IP アドレス (存在する場合) に基づくデータを各行にプレフィックスとして付ける必要があります。
入力からをtb
取得するにはどうすればよいですか?remoteAddress
ここには、プロトタイプの継承といくつかの類似点があるようです。つまり、 (プロパティを欠いている)をtb
尋ねてから(プロパティを持っている)を尋ねる必要があります。ta
ta
socket
他のより複雑ではあるが類似の問題があるため、パイプからメタデータを追加および読み取るための一般的なアプローチを探しています。
meta
現在、プロパティを持つオブジェクトで構成される「オブジェクト ストリーム」を使用して、この問題を解決していpayload
ます。各変換は、その作業を行う必要がpayload
あり、ほとんどはそのままにしておきmeta
ます。このソリューションは醜いです。特に、プレーンなバッファーや文字列ではなく、これらの拡張オブジェクトの xnet
ように見えるが生成する新しいモジュールを作成する必要があったためです。net
(Haskeller は、このソリューションをモナドとして認識するかもしれません。そこでは、私が使用するほとんどのストリーム変換を「メタ」モナドに持ち上げています。私はまだ Haskell を学んでいるので、この観察は正しくない可能性があります。)