如何在 Thrift 客户端中使用我们自己的 I/O 框架?

How to use our own I/O framework inside a Thrift client?

服务器端一切正常。

但是在客户端,我们似乎不能只使用Thrift来处理协议,send/receive使用我们自己的I/O框架(例如muduo或其他框架)来处理数据。

有什么方法可以用 C++ 实现吗?

我认为这是一个合理的问题,可以扩展到更一般的问题:

如何将其他传输机制与 Apache Thrift 一起使用?

正如 Hcorg 指出的那样,由于框架的模块化结构,实现这一点并不难。基本上,必须遵循这些步骤(这适用于 Thrift 支持的所有语言,不仅是 C++)

  • 从 TTransport 派生一个专门的 class。在某些情况下,这是一个接口,而不是一个基础 class,但这并不重要。
  • 实施所有 methods needed
  • 对于服务器端,你可能需要一个TServerTransport派生

现有的实现可以作为模型,尽管 TTransport 中的方法很多,但大多数实现起来并不难。

此外,我还基于 TStreamTransport 提供了一个专门的传输实现,以将 STOMP 与 Delphi 一起使用。相关代码可以在/contrib Folder中找到,值得一看。您知道,Thrift 的优点之一是它在所有语言中的工作方式都非常相似。