如何在 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 并启动它 运行。
服务器教程包含启动服务器的通用示例,您可以将其用作参考。
我正在尝试使用 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 并启动它 运行。
服务器教程包含启动服务器的通用示例,您可以将其用作参考。