根据 boost 1.68 的文档,旧 io_context::post 已弃用。 boost::asio::post() 被推荐。谁能给我举个例子吗?
According to the doc of boost 1.68, old io_context::post is deprecated. boost::asio::post() is recomanded. Can anyone give me an example?
我想使用asio::io_context::post的功能。但我发现它被标记为 DEPRECATED
You can see it here
(已弃用:使用 boost::asio::post()。)请求 io_context 立即调用给定的处理程序和 return。
那我想试试boost::asio::post(),但是我想不出代码怎么写。没有示例,没有代码,甚至没有文档。
你能帮帮我吗?
非常感谢。
我有一个来自我的 RTSP 服务器的真实示例,使用 boost.asio:
using udp_buffer = std::array<char, 0xFFFF>;
using shared_udp_socket = std::tuple<boost::asio::ip::udp::socket,
boost::asio::io_context::strand,
udp_buffer,
boost::asio::ip::udp::endpoint>;
void rtsp::rtsp_server::handle_incoming_udp_traffic(const boost::system::error_code &error,
std::size_t received_bytes,
rtsp::rtsp_server::shared_udp_socket &incoming_socket) {
if (error)
throw std::runtime_error{error.message()};
auto data = std::make_shared<std::vector<char>>();
std::copy_n(std::get<2>(incoming_socket).cbegin(), received_bytes, std::back_inserter(*data));
boost::asio::ip::udp::endpoint received_from_endpoint = std::get<3>(incoming_socket);
boost::asio::post(std::get<1>(incoming_socket).get_io_context(),
std::bind(&rtsp::rtsp_server::handle_new_incoming_message,
data, std::ref(incoming_socket),
received_from_endpoint,
std::ref(this->server_state_))
);
start_async_receive(incoming_socket);
}
void rtsp::rtsp_server::handle_new_incoming_message(std::shared_ptr<std::vector<char>> message,
shared_udp_socket &socket_received_from,
boost::asio::ip::udp::endpoint received_from_endpoint,
server::rtsp_server_state &server_state {...}
在那里你可以看到我如何使用 boost::asio::post
到 post 处理传入的 UDP 数据报到 iocontext,同时通过 [=12 开始重新收听 udp 套接字上的新传入数据报=].如果您需要进一步的解释,请告诉我。
我想使用asio::io_context::post的功能。但我发现它被标记为 DEPRECATED
You can see it here (已弃用:使用 boost::asio::post()。)请求 io_context 立即调用给定的处理程序和 return。
那我想试试boost::asio::post(),但是我想不出代码怎么写。没有示例,没有代码,甚至没有文档。
你能帮帮我吗? 非常感谢。
我有一个来自我的 RTSP 服务器的真实示例,使用 boost.asio:
using udp_buffer = std::array<char, 0xFFFF>;
using shared_udp_socket = std::tuple<boost::asio::ip::udp::socket,
boost::asio::io_context::strand,
udp_buffer,
boost::asio::ip::udp::endpoint>;
void rtsp::rtsp_server::handle_incoming_udp_traffic(const boost::system::error_code &error,
std::size_t received_bytes,
rtsp::rtsp_server::shared_udp_socket &incoming_socket) {
if (error)
throw std::runtime_error{error.message()};
auto data = std::make_shared<std::vector<char>>();
std::copy_n(std::get<2>(incoming_socket).cbegin(), received_bytes, std::back_inserter(*data));
boost::asio::ip::udp::endpoint received_from_endpoint = std::get<3>(incoming_socket);
boost::asio::post(std::get<1>(incoming_socket).get_io_context(),
std::bind(&rtsp::rtsp_server::handle_new_incoming_message,
data, std::ref(incoming_socket),
received_from_endpoint,
std::ref(this->server_state_))
);
start_async_receive(incoming_socket);
}
void rtsp::rtsp_server::handle_new_incoming_message(std::shared_ptr<std::vector<char>> message,
shared_udp_socket &socket_received_from,
boost::asio::ip::udp::endpoint received_from_endpoint,
server::rtsp_server_state &server_state {...}
在那里你可以看到我如何使用 boost::asio::post
到 post 处理传入的 UDP 数据报到 iocontext,同时通过 [=12 开始重新收听 udp 套接字上的新传入数据报=].如果您需要进一步的解释,请告诉我。