Можно ли конвертировать код Thrift в Async?

В настоящее время у меня есть следующий код C ++, который отправляет сообщения в Flume с использованием Thrift, но мне нужно сделать то же самое неблокирующим способом с обратным вызовом для использования в Node.js.

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 ++ и задокументирован ли он где угодно. Гугл мне пока не помог.

1

Решение

Ты можешь использовать libuv для асинхронной работы. NodeJS также использует эту библиотеку для асинхронных операций

0

Другие решения

Не невозможно, или так кажется. Я сейчас работаю над тем же, но у меня пока нет работы.

Я нашел две полезные ссылки, которые могут быть вам полезны:

Клиентская реализация C ++ что некоторые классифицируются, которые помогают с недостающими частями этого Реализация Java

Есть также несколько довольно крутых идей boost.asio на apache jira для БЕРЕЖЛИВОСТЬ-1

Похоже, что вся информация есть, но я все еще немного сбит с толку 🙂

Hth

0

fbthrift«s cpp2 поддерживает это. fbthrift это вилка Apache Thrift.

0
По вопросам рекламы [email protected]