使用C ++在stdin上创建Thrift服务器

时间:2012-09-18 11:08:54

标签: c++ thrift

我想知道是否可以创建一个Thrift服务器来监听stdin并将答案写入stdout。我在Thrift找到了TFDTransport。

int fd = fgetc( stdin );
shared_ptr<TFDTransport> innerTransport(new TFDTransport(fd));
shared_ptr<TBufferedTransport> transport(new TBufferedTransport(innerTransport));

我不确定如何创建一个Thrift服务器,它将监听stdin并写入stdout的答案。以下是初始化新服务器的标准方法:

shared_ptr<TJSONProtocol> protocol(new TJSONProtocol(transport));
TSimpleServer server(processor,
                   serverTransport,
                   transportFactory,
                   protocolFactory);

但此时我不确定如何进步。是否可以使用Thrift在stdin / stdout上创建服务器,如果可以,如何创建这样的服务器?

2 个答案:

答案 0 :(得分:1)

您可能需要创建自己的STDIN / OUT客户端和服务器传输。 如果服务器是父进程而客户端是子进程,那将很容易,但反过来更有趣。它本质上允许多种插件框架。

我对同一机器IPC实际上非常感兴趣。

答案 1 :(得分:1)

如果你的环境是Windows:C ++中有一个Anon Pipes的实现,它就是这样做的。见https://issues.apache.org/jira/browse/THRIFT-1558