Я использую Boost Asio для настройки сокетного соединения.Я хотел бы посмотреть на данные в буфере, не используя их, и я хотел бы использовать условие завершения, чтобы гарантировать, что я могу остановить блокирующий вызов в случае необходимости.
Я могу получить функциональность просмотра из basic_stream_socket :: receive :
template<
typename MutableBufferSequence>
std::size_t receive(
const MutableBufferSequence & buffers,
socket_base::message_flags flags,
boost::system::error_code & ec);
Один из возможных флагов сообщения: basic_stream_socket :: message_peek .Однако этот вызов блокируется до тех пор, пока не будет прочитан хотя бы один байт или не произойдет ошибка.Я могу получить функциональность условия завершения из read :
template<
typename SyncReadStream,
typename MutableBufferSequence,
typename CompletionCondition>
std::size_t read(
SyncReadStream & s,
const MutableBufferSequence & buffers,
CompletionCondition completion_condition,
boost::system::error_code & ec);
Я могу предоставить метод complete_condition, который проверяет, следует ли прервать вызов перед продолжением.
Мой вопросэто: есть ли способ получить параметр message_flags и параметр complete_condition в одном и том же вызове метода?