コード例 #1
0
ファイル: main.cpp プロジェクト: CCJY/asio_samples
void handle_read(const session_ptr& the_session,
    handler_allocator_type& the_allocator,
    const frame_buffer_ptr& frame_buffer,
    const boost::system::error_code& error,
    std::size_t frames_transferred)
{
  print_frames(*frame_buffer, frames_transferred);

  if (boost::asio::error::eof == error)
  {
    std::cout << "Input stream was closed." \
        " But it\'s a serial port so begin read operation again...\n";

    the_session->async_read_some(frame_buffer->begin(), frame_buffer->end(),
        ma::make_custom_alloc_handler(the_allocator, ma::detail::bind(
            handle_read, the_session, ma::detail::ref(the_allocator), 
            frame_buffer, ma::detail::placeholders::_1, 
            ma::detail::placeholders::_2)));
    return;
  }

  if (error)
  {
    std::cout << "Read unsuccessful. Begin the session stop...\n";
    the_session->async_stop(ma::make_custom_alloc_handler(the_allocator,
        ma::detail::bind(handle_stop, ma::detail::placeholders::_1)));
    return;
  }

  the_session->async_read_some(frame_buffer->begin(), frame_buffer->end(),
      ma::make_custom_alloc_handler(the_allocator, ma::detail::bind(handle_read,
          the_session, ma::detail::ref(the_allocator), frame_buffer,
          ma::detail::placeholders::_1, ma::detail::placeholders::_2)));

  // Only for test of cyclic_read_session::async_write_some
  //frame_ptr frame = *(frame_buffer->begin());
  //the_session->async_write_some(boost::asio::buffer(*frame),
  //    ma::detail::bind(handle_write, the_session, frame, 
  //        ma::detail::placeholders::_1, ma::detail::placeholders::_2));
}
コード例 #2
0
ファイル: main.cpp プロジェクト: HunterChen/asio-samples
void handle_console_close(const session_ptr& session)
{
  std::cout << "User console close detected. Begin stop the session...\n";
  session->async_stop(boost::bind(handle_stop, _1));
}
コード例 #3
0
ファイル: main.cpp プロジェクト: CCJY/asio_samples
void handle_console_close(const session_ptr& session)
{
  std::cout << "User console close detected. Begin stop the session...\n";
  session->async_stop(
      ma::detail::bind(handle_stop, ma::detail::placeholders::_1));
}