我有一个用Boost.ASIO编写的程序,我正在寻找一个C++ XMPP客户端库,它可以与它一起使用,也就是说,一个已经使用Boost.ASIO的库,它要么公开它的内部io_service实例,要么我可以用我自己现有的io_service实例初始化它,然后在我的io_service上调用run()。
显然,Swiften (https://swift.im/swiften.html)在内部使用Boost,但是我找不到关于如何获得内部io_service的任何例子。
有指针吗?
发布于 2016-03-14 07:22:26
根据源代码的一些片段,Swiften在内部使用Boost,但不使用ASIO部分。它使用的是shared_ptr、boost::bind、随机生成器等,而不是boost::asio。
根据消息来源,Swift::EventLoop有io_service-like接口,但不使用它。
因此,答案是:不,您不能从Swiften中提取io_service,因为它不使用boost::asio。
UPD:但是,您可以以异步的方式在单独的线程中使用Swiften,然后对您自己的事件循环执行io_service::post,但是需要编写自己的包装器、完成处理程序等等。
https://stackoverflow.com/questions/35974585
复制相似问题