27 #include <boost/asio.hpp> 32 LineReader(boost::asio::io_service& io_service): m_InputStream(io_service, ::dup(STDIN_FILENO)), m_InputBuffer(4096), m_InputReader(&m_InputBuffer) {
38 m_OnInputLineCallback = a_OnInputLineCallback;
44 boost::asio::async_read_until(m_InputStream, m_InputBuffer,
'\n',[
this](boost::system::error_code a_ErrorCode,
size_t) {
47 char l_InputLineBuffer[1000];
48 m_InputReader.getline(l_InputLineBuffer,1000);
49 std::istringstream l_InputStream(l_InputLineBuffer);
50 l_InputStream >> std::hex;
51 std::vector<unsigned char> l_Buffer;
52 l_Buffer.reserve(65536);
53 l_Buffer.insert(l_Buffer.end(),std::istream_iterator<unsigned int>(l_InputStream), {});
54 if (m_OnInputLineCallback) {
55 m_OnInputLineCallback(std::move(l_Buffer));
62 m_InputStream.close();
68 std::function<void(const std::vector<unsigned char>)> m_OnInputLineCallback;
69 boost::asio::posix::stream_descriptor m_InputStream;
70 boost::asio::streambuf m_InputBuffer;
71 std::istream m_InputReader;
74 #endif // LINE_READER_H
LineReader(boost::asio::io_service &io_service)
void SetOnInputLineCallback(std::function< void(const std::vector< unsigned char >)> a_OnInputLineCallback)