示例#1
0
文件: write.hpp 项目: Dagarman/mame
 std::size_t write_buffer_sequence(SyncWriteStream& s,
     const ConstBufferSequence& buffers, const ConstBufferIterator&,
     CompletionCondition completion_condition, asio::error_code& ec)
 {
   ec = asio::error_code();
   asio::detail::consuming_buffers<const_buffer,
       ConstBufferSequence, ConstBufferIterator> tmp(buffers);
   while (!tmp.empty())
   {
     if (std::size_t max_size = detail::adapt_completion_condition_result(
           completion_condition(ec, tmp.total_consumed())))
       tmp.consume(s.write_some(tmp.prepare(max_size), ec));
     else
       break;
   }
   return tmp.total_consumed();;
 }
示例#2
0
文件: write.hpp 项目: 3Jade/Sprawl
std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
    CompletionCondition completion_condition, boost::system::error_code& ec)
{
  ec = boost::system::error_code();
  boost::asio::detail::consuming_buffers<
    const_buffer, ConstBufferSequence> tmp(buffers);
  std::size_t total_transferred = 0;
  tmp.prepare(detail::adapt_completion_condition_result(
        completion_condition(ec, total_transferred)));
  while (tmp.begin() != tmp.end())
  {
    std::size_t bytes_transferred = s.write_some(tmp, ec);
    tmp.consume(bytes_transferred);
    total_transferred += bytes_transferred;
    tmp.prepare(detail::adapt_completion_condition_result(
          completion_condition(ec, total_transferred)));
  }
  return total_transferred;
}