123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #ifndef BOOST_ASIO_COMPLETION_CONDITION_HPP
- #define BOOST_ASIO_COMPLETION_CONDITION_HPP
- #if defined(_MSC_VER) && (_MSC_VER >= 1200)
- # pragma once
- #endif
- #include <boost/asio/detail/push_options.hpp>
- #include <boost/asio/detail/push_options.hpp>
- #include <cstddef>
- #include <boost/config.hpp>
- #include <boost/asio/detail/pop_options.hpp>
- namespace boost {
- namespace asio {
- namespace detail {
- enum { default_max_transfer_size = 65536 };
- inline std::size_t adapt_completion_condition_result(bool result)
- {
- return result ? 0 : default_max_transfer_size;
- }
- inline std::size_t adapt_completion_condition_result(std::size_t result)
- {
- return result;
- }
- class transfer_all_t
- {
- public:
- typedef std::size_t result_type;
- template <typename Error>
- std::size_t operator()(const Error& err, std::size_t)
- {
- return !!err ? 0 : default_max_transfer_size;
- }
- };
- class transfer_at_least_t
- {
- public:
- typedef std::size_t result_type;
- explicit transfer_at_least_t(std::size_t minimum)
- : minimum_(minimum)
- {
- }
- template <typename Error>
- std::size_t operator()(const Error& err, std::size_t bytes_transferred)
- {
- return (!!err || bytes_transferred >= minimum_)
- ? 0 : default_max_transfer_size;
- }
- private:
- std::size_t minimum_;
- };
- }
- #if defined(GENERATING_DOCUMENTATION)
- unspecified transfer_all();
- #else
- inline detail::transfer_all_t transfer_all()
- {
- return detail::transfer_all_t();
- }
- #endif
- #if defined(GENERATING_DOCUMENTATION)
- unspecified transfer_at_least(std::size_t minimum);
- #else
- inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum)
- {
- return detail::transfer_at_least_t(minimum);
- }
- #endif
- }
- }
- #include <boost/asio/detail/pop_options.hpp>
- #endif
|