1

我有一个使用 Boost.ASIO 编写的程序。我正在寻找一个可以与它一起使用的 C++ XMPP 客户端库,即一个已经使用 Boost.ASIO 并且公开其内部 io_service 实例,或者我可以使用我自己现有的 io_service 实例进行初始化的库,然后只需在我的 io_service 上调用 run()。

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

任何指针?

4

1 回答 1

2

根据一些源代码片段,Swiften 在内部使用了 Boost,但不是 ASIO 的一部分。它使用诸如shared_ptr, boost::bind, 随机生成器之类的东西,但不使用boost::asio.

并且根据消息来源,Swift::EventLoopio_service类似的界面,但没有使用它。

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

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

于 2016-03-14T07:22:26.083 回答