Boost C++ 库

...世界上最受推崇、设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

ssl::stream::async_handshake (2 of 2 overloads) - Boost C++ 函数库
PrevUpHomeNext

启动异步 SSL 握手。

template<
    typename ConstBufferSequence,
    typename BufferedHandshakeToken = default_completion_token_t<executor_type>>
DEDUCED async_handshake(
    handshake_type type,
    const ConstBufferSequence & buffers,
    BufferedHandshakeToken && token = default_completion_token_t< executor_type >(),
    constraint_t< is_const_buffer_sequence< ConstBufferSequence >::value >  = 0);

此函数用于在流上异步执行 SSL 握手。它是一个异步操作的启动函数,并且总是立即返回。

参数

type

要执行的握手类型,即作为客户端或作为服务器。

缓冲区

用于握手的缓冲区数据。尽管 buffers 对象可能会根据需要进行复制,但底层缓冲区的拥有权仍由调用者保留,调用者必须保证在调用完成处理程序之前这些缓冲区保持有效。

标记

将用于生成完成处理程序的完成令牌,当握手完成时将调用该处理程序。潜在的完成令牌包括 use_futureuse_awaitableyield_context,或者具有正确完成签名的函数对象。完成处理程序的函数签名必须是

void handler(
  const boost::system::error_code& error, // Result of operation.
  std::size_t bytes_transferred // Amount of buffers used in handshake.
);

无论异步操作是立即完成还是不立即完成,都不会在此函数内部调用完成处理程序。在立即完成的情况下,处理程序的调用将通过等效于使用 async_immediate 的方式执行。

完成签名
void(boost::system::error_code, std::size_t)
按操作取消

此异步操作支持以下cancellation_type 值的取消

  • cancellation_type::terminal
  • cancellation_type::partial

如果这些值也被 Stream 类型的 async_read_someasync_write_some 操作所支持。


PrevUpHomeNext