首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为了调试目的转储apache节约消息?

为了调试目的转储apache节约消息?
EN

Stack Overflow用户
提问于 2020-11-12 12:07:55
回答 1查看 342关注 0票数 1

阿帕奇是开放源码RPC框架中比较流行的选择之一(gRPC也是开放发布后获得大量跟踪的一个)。

在我的c++设置中,我使用了一个TMultiplexedProcessor。我想这可能是任何TProcessor的事情,因为我只是感兴趣的打印什么是发送。

这个方法名为:

代码语言:javascript
复制
  bool process(std::shared_ptr<protocol::TProtocol> in,
               std::shared_ptr<protocol::TProtocol> out,
               void* connectionContext) override {

我的想法是再次重写它,这样我就可以打印in参数--但是我如何编写TProtocol来输出呢?(乍一看,序列化成字符串似乎不那么简单)

我有种感觉,也许还有其他的或者更简单的方法。因此,我的问题是,如何转储通过节俭(用于调试目的)接收的所有消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 12:36:08

TProtocolTapTDebugProtocol

用法示例可在thrift_dump.cpp中找到

代码语言:javascript
复制
  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();
      }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64803635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档