阿帕奇是开放源码RPC框架中比较流行的选择之一(gRPC也是开放发布后获得大量跟踪的一个)。
在我的c++设置中,我使用了一个TMultiplexedProcessor。我想这可能是任何TProcessor的事情,因为我只是感兴趣的打印什么是发送。
这个方法名为:
bool process(std::shared_ptr<protocol::TProtocol> in,
std::shared_ptr<protocol::TProtocol> out,
void* connectionContext) override {我的想法是再次重写它,这样我就可以打印in参数--但是我如何编写TProtocol来输出呢?(乍一看,序列化成字符串似乎不那么简单)
我有种感觉,也许还有其他的或者更简单的方法。因此,我的问题是,如何转储通过节俭(用于调试目的)接收的所有消息?
发布于 2020-11-13 12:36:08
有TProtocolTap和TDebugProtocol。
用法示例可在thrift_dump.cpp中找到
shared_ptr<TProtocol> iprot(new TBinaryProtocol(itrans));
shared_ptr<TProtocol> oprot(
new TDebugProtocol(
shared_ptr<TTransport>(new TBufferedTransport(
shared_ptr<TTransport>(new TFDTransport(STDOUT_FILENO))))));
TProtocolTap tap(iprot, oprot);
std::string name;
TMessageType messageType;
int32_t seqid;
for (;;) {
tap.readMessageBegin(name, messageType, seqid);
tap.skip(T_STRUCT);
tap.readMessageEnd();
}https://stackoverflow.com/questions/64803635
复制相似问题