我正在使用许多[Filter]
“处理数据”的模块,最后将这些数据写入不同的设备。
[Filter] -> [Filter] -> [Writer]
配置取决于运行时。问题通常是[Filter]
并不真正知道它可能是链的末端以及数据写入的位置。
有些[Filter]
在 Google 协议缓冲区中产生输出,[Writer]
可能正在写入文件。但在某些情况下,生成结构化数据并应通过网络传输......像这样:
#pragma pack(push,1)
struct data_s {
char a;
int i;
int j;
char str[64];
};
#pragma pack(pop)
data_t d;
//...
d.i = htonl( d.i);
d.j = htonl( d.j);
this->write( d );
在这种情况下......有没有办法在每个 [Filter] 和 [Writer] 中都这样做......作家只看到一块内存而没有任何结构。有没有办法
[Filter] -> [Filter] -> [hton_struct] -> [Writer]
外包结构化网络字节顺序翻译。有没有一种舒适且可重用的方法来传输一块带有翻译描述的内存到网络字节顺序?因此,不必在[Filter]
仅在上述前提条件适用的情况下才使用的组件中实现它?