我目前有以下使用Thrift發佈到Flume的C++代碼,但我需要以非阻塞方式執行同樣的操作,並在Node.js中使用回調。是否有可能將Thrift代碼轉換爲異步
boost::shared_ptr<TTransport> socket(new TSocket(logger->host_.c_str(), logger->port_));
boost::shared_ptr<TTransport> transport(new TFramedTransport(socket));
boost::shared_ptr<TProtocol> protocol(new TCompactProtocol(transport));
map <string,string> headers;
try {
ThriftSourceProtocolClient client(protocol);
transport->open();
ThriftFlumeEvent evt;
//headers["host"] = std::string(hostname);
evt.headers = headers;
evt.body = message;
client.append(evt);
transport->close();
} catch(...) {
cerr << "\tException raised!" << endl;
}
具體來說,Java API的具有AsyncClient,是否爲C++存在,並且它記錄任何地方。到目前爲止,Google尚未幫助我。
Randy Abernethy本週向Thrift添加了支持,以便在JavaScript中使用TCompactProtocol,所以這變得不必要了。我確實取得了進展,我發現需要在COB模式下編譯Thrift擴展,然後才能獲得異步存根,但我無法確定如何創建正確的C++對象來使用這些存根。 C++不是我最強的語言。 – AaronM