使用 Boost.ASIO 的 XMPP 库

XMPP library working with Boost.ASIO

我有一个使用 Boost.ASIO 编写的程序。我正在寻找一个可以与它一起使用的 C++ XMPP 客户端库,也就是说,一个已经使用 Boost.ASIO 并且公开其内部 io_service 实例,或者我可以用我的初始化的库拥有现有的 io_service 实例,然后只需在我的 io_service.

上调用 运行()

显然 Swiften (https://swift.im/swiften.html) 在内部使用了 Boost,但我找不到任何关于如何获取内部 io_service.

的示例

有指示吗?

根据source code的一些片段,Swiften在内部使用了Boost,但没有使用其中的ASIO部分。它使用 shared_ptrboost::bind、随机生成器等,但不使用 boost::asio.

据消息来源称,Swift::EventLoop 有类似 io_service 的界面,但不会使用它。

所以答案是:不,你不能从 Swiften 中提取 io_service,因为它不使用 boost::asio.

更新:但是,您可以在单独的线程中以异步方式使用 Swiften,然后对您自己的事件循环执行 io_service::post,但需要编写我们自己的包装器、完成处理程序等来管理它。