Re[6]: boost async_read && transfer_at_least
От: tris  
Дата: 15.08.12 21:31
Оценка:
Здравствуйте, abrarov, Вы писали:

A>Это вопрос? В исходниках Boost.Asio (Boost 1.50, /boost/asio/buffer.hpp) я ничего подобного не нашел.


Прошу прощения, это я напутал, когда в дебагере в кишках asio ковырялся. Там в impl/read.hpp:

template <typename AsyncReadStream,
      typename CompletionCondition, typename ReadHandler>
  class read_op<AsyncReadStream, boost::asio::mutable_buffers_1,
      CompletionCondition, ReadHandler>
    : detail::base_from_completion_cond<CompletionCondition>
  {
    void operator()(const boost::system::error_code& ec,
        std::size_t bytes_transferred, int start = 0)
    {
      std::size_t n = 0;
      switch (start)
      {
        case 1:
        n = this->check_for_completion(ec, total_transferred_); // вот тут default_max_transfer_size = 65536 вернулся
        for (;;)
        {
          stream_.async_read_some(boost::asio::buffer(
                buffer_ + total_transferred_, n), *this); // и вот тут я проморгал operator+
          return; default:
          total_transferred_ += bytes_transferred;
          if ((!ec && bytes_transferred == 0)
              || (n = this->check_for_completion(ec, total_transferred_)) == 0
              || total_transferred_ == boost::asio::buffer_size(buffer_))
            break;
        }

        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
      }
    }
  };
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.