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

时间:2015-04-08 05:01:55

标签: c thrift

我正在尝试使用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()
}

1 个答案:

答案 0 :(得分:2)

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

Thrift的源代码分发包括显示您需要执行的操作的a server tutorial for C (GLib)。 (有关上下文,请参阅两者所基于的the matching tutorial for C++the tutorial .thrift file。)我建议您仔细阅读,因为它提供了一个工作示例和有关Thrift框架如何与您进行交互的重要信息代码。

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

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

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