如何在 C 语言(使用 GLib)中创建 Thrift 服务器?

How do I create a Thrift server in C (with GLib)?

我正在尝试使用 thrift 在 c 中实现客户端/服务器。我能够使用 thrift 在 cpp 中生成服务器框架。但是在为 c_glib 生成时,没有生成服务器框架文件。

我在网上搜索了差不多的,但几乎没有用。如果有人能帮我解决这个问题,我将不胜感激。

下面给出了我正在使用的 .thrift 文件

#!/usr/local/bin/thrift --gen cpp

namespace c_glib Test

struct packet {
  1:required i32 header,
  2:required i32 data,
  3:required i32 crc
}

service Something {
  i32 ping(),
  packet transfer()
}

Thrift 的 C 编译器不生成骨架服务器;您需要自己编写此代码。然而,涉及的工作并不多。

Thrift 的源代码分发包括 a server tutorial for C (GLib) that shows what you need to do. (For context, refer to the matching tutorial for C++ and the tutorial .thrift file,两者均基于此。)我建议您通读这篇文章,因为它提供了一个工作示例和有关 Thrift 框架预期如何与您的代码交互的重要信息.

在高层次上,用 C 实现服务器的任务与用 C++ 实现服务器的任务非常相似。首先,创建一个处理程序 class,它派生自编译器生成的抽象基 class(TestSomethingHandler,在您的情况下),用于实现服务器的方法。然后启动一个服务器,你只需

  • 创建编译器生成的处理器实例 (TestSomethingProcessor),将其传递给处理程序实现的实例;
  • 创建定义服务器通信方式的必要传输和工厂对象;最后
  • 使用上述对象创建服务器实例 class 并启动它 运行。

服务器教程包含启动服务器的通用示例,您可以将其用作参考。