RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::async::SSLStream类 参考

异步 TLS 安全流 更多...

#include <rmvl/io/ssl.hpp>

类 rm::async::SSLStream 继承关系图:
rm::async::SSLStream 的协作图:

Public 成员函数

 SSLStream (StreamSocket socket, SSLContext &ctx)
 由异步 TCP 流式 Socket 创建异步 TLS 流
 SSLStream (const SSLStream &)=delete
 SSLStream (SSLStream &&) noexcept=default
SSLStreamoperator= (const SSLStream &)=delete
SSLStreamoperator= (SSLStream &&) noexcept=default
 ~SSLStream ()=default
std::string lasterr () const
 获取最近一次错误信息
Task< bool > connect (std::string_view server_name={})
 执行客户端 TLS 握手
Task< bool > accept ()
 执行服务端 TLS 握手
Task< bool > handshake (std::string_view server_name={})
 根据上下文模式执行 TLS 握手
Task< std::string > read (size_t max_size=65536)
 异步加密读取数据
Task< size_t > read_to (char *buf, size_t size)
 异步加密读取数据到指定内存
Task< bool > write (std::string_view data)
 异步加密写入数据
Public 成员函数 继承自 rm::SSLStream
 SSLStream (StreamSocket socket, SSLContext &ctx)
 由已有 TCP 流式 Socket 创建 TLS 流
 SSLStream (const SSLStream &)=delete
 SSLStream (SSLStream &&) noexcept=default
SSLStreamoperator= (const SSLStream &)=delete
SSLStreamoperator= (SSLStream &&) noexcept=default
 ~SSLStream ()
bool invalid () const noexcept
 TLS 流是否失效
const StreamSocketsocket () const noexcept
 获取底层 Socket
StreamSocketsocket () noexcept
 获取底层 Socket
std::string lasterr () const
 获取最近一次错误信息
bool connect (std::string_view server_name={})
 执行客户端 TLS 握手
bool accept ()
 执行服务端 TLS 握手
bool handshake (std::string_view server_name={})
 根据上下文模式执行 TLS 握手
std::string read (size_t max_size=65536) noexcept
 加密读取数据
size_t read_to (char *buf, size_t size) noexcept
 加密读取数据到指定内存
bool write (std::string_view data) noexcept
 加密写入数据
void close () noexcept
 关闭 TLS 流与底层 Socket

额外继承的成员函数

Protected 成员函数 继承自 rm::SSLStream
SSLContextcontext () noexcept
 获取 TLS 上下文
const SSLContextcontext () const noexcept
 获取 TLS 上下文

详细描述

异步 TLS 安全流

该类包装 rm::async::StreamSocket,并在 OpenSSL 返回 WANT_READ/WANT_WRITE 时挂起协程等待对应 I/O 事件,避免阻塞 IOContext 事件循环。

构造及析构函数说明

◆ SSLStream() [1/3]

rm::async::SSLStream::SSLStream ( StreamSocket socket,
SSLContext & ctx )

由异步 TCP 流式 Socket 创建异步 TLS 流

函数调用图:

◆ SSLStream() [2/3]

rm::async::SSLStream::SSLStream ( const SSLStream & )
delete
函数调用图:

◆ SSLStream() [3/3]

rm::async::SSLStream::SSLStream ( SSLStream && )
defaultnoexcept
函数调用图:

◆ ~SSLStream()

rm::async::SSLStream::~SSLStream ( )
default
函数调用图:

成员函数说明

◆ accept()

Task< bool > rm::async::SSLStream::accept ( )

执行服务端 TLS 握手

◆ connect()

Task< bool > rm::async::SSLStream::connect ( std::string_view server_name = {})

执行客户端 TLS 握手

参数
[in]server_name服务器名称,用于 SNI,可为空
返回
握手是否成功

◆ handshake()

Task< bool > rm::async::SSLStream::handshake ( std::string_view server_name = {})

根据上下文模式执行 TLS 握手

参数
[in]server_name客户端模式下的 SNI,可为空
返回
握手是否成功

◆ lasterr()

std::string rm::async::SSLStream::lasterr ( ) const
inlinenodiscard

获取最近一次错误信息

函数调用图:

◆ operator=() [1/2]

SSLStream & rm::async::SSLStream::operator= ( const SSLStream & )
delete
函数调用图:

◆ operator=() [2/2]

SSLStream & rm::async::SSLStream::operator= ( SSLStream && )
defaultnoexcept
函数调用图:

◆ read()

Task< std::string > rm::async::SSLStream::read ( size_t max_size = 65536)

异步加密读取数据

◆ read_to()

Task< size_t > rm::async::SSLStream::read_to ( char * buf,
size_t size )

异步加密读取数据到指定内存

◆ write()

Task< bool > rm::async::SSLStream::write ( std::string_view data)

异步加密写入数据