В настоящее время у меня есть следующий код на C++, который отправляется в Flume с помощью Thrift, но мне нужно сделать то же самое неблокируемым способом с обратным вызовом для использования в Node.js.Можно ли преобразовать код Trrift в Async
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 пока не помог мне.
Поддержка была добавлена в Thrift на этой неделе Рэнди Абернети, чтобы включить использование TCompactProtocol в JavaScript, поэтому это стало ненужным. Я сделал прогресс за этим, я обнаружил, что вам нужно скомпилировать расширения Thrift в режиме COB, а затем вы получите асинхронные заглушки, но мне не удалось определить, как создать правильные объекты C++ для использования этих заглушек. C++ - не самый сильный язык. – AaronM