boost::asio::windows::stream_handle を使用し、async_read_some メソッドを使用して、名前付きパイプからデータを再帰的に読み取ります。async_read_some メソッドに read_handler を関連付けます。ただし、 async_read_some ハンドラーは一度だけ呼び出され、新しいメッセージがパイプを通過してもそれ以上呼び出されません。試行錯誤の方法で、 read_handler を async_read_some メソッドに再度割り当て、適切に呼び出されるようになりました。しかし、正しい方法であるか、パイプから継続的な応答を得るためのエレガントな方法を提案してください。
boost::asio::io_service my_io_service;
boost::asio::windows::stream_handle pipe( my_io_service);
boost::array<char, 4096> buffer;
void CPublishSubscribeLib::read_handler(const boost::system::error_code& ec, std::size_t bytes_transferred)
{
if(bytes_transferred > 0 )
pipe.async_read_some(boost::asio::buffer(buffer, 150), boost::bind(&CPublishSubscribeLib::read_handler, this, _1, _2));
}
よろしくお願いします!