acl
3.5.3.0
sslbase_io.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "../stdlib/string.hpp"
4
#include "
stream_hook.hpp
"
5
6
struct
ACL_VSTREAM
;
7
8
namespace
acl
{
9
10
class
sslbase_conf;
11
class
atomic_long;
12
13
class
ACL_CPP_API
sslbase_io
:
public
stream_hook
14
{
15
public
:
16
/**
17
* 构造函数
18
* @param conf {sslbase_conf&} 对每一个 SSL 连接进行配置的类对象
19
* @param server_side {bool} 是否为服务端模式,因为客户端模式与服务端
20
* 模式的握手方法不同,所以通过此参数来进行区分
21
* @param nblock {bool} 是否为非阻塞模式
22
*/
23
sslbase_io
(
sslbase_conf
& conf,
bool
server_side,
bool
nblock =
false
);
24
virtual
~
sslbase_io
(
void
);
25
26
/**
27
* ssl 握手纯虚方法
28
* @return {bool}
29
*/
30
virtual
bool
handshake(
void
) = 0;
31
32
/**
33
* 设置套接字为阻塞模式/非阻塞模式
34
* @param yes {bool} 当为 false 时则设为阻塞模式,否则设为非阻塞模式
35
*/
36
void
set_non_blocking(
bool
yes);
37
38
/**
39
* 判断当前设置的 SSL IO 是否阻塞模式还是非阻塞模式
40
* @return {bool} 返回 true 则表示为非阻塞模式,否则为阻塞模式
41
*/
42
bool
is_non_blocking
(
void
)
const
43
{
44
return
nblock_;
45
}
46
47
/**
48
* 判断 SSL 握手是否成功
49
* @return {bool}
50
*/
51
bool
handshake_ok
(
void
)
52
{
53
return
handshake_ok_;
54
}
55
56
/**
57
* 设置 SNI HOST 字段
58
* @param host {const char*}
59
*/
60
void
set_sni_host(
const
char
* host);
61
62
protected
:
63
sslbase_conf
&
base_conf_
;
64
bool
server_side_
;
65
bool
nblock_
;
66
bool
handshake_ok_
;
67
atomic_long
*
refers_
;
68
ACL_VSTREAM
*
stream_
;
69
string
sni_host_
;
// just for SNI
70
};
71
72
}
// namespace acl
acl::atomic_long
Definition:
atomic.hpp:46
acl::sslbase_io
Definition:
sslbase_io.hpp:13
acl::sslbase_io::base_conf_
sslbase_conf & base_conf_
Definition:
sslbase_io.hpp:63
acl::sslbase_io::stream_
ACL_VSTREAM * stream_
Definition:
sslbase_io.hpp:68
acl::sslbase_io::server_side_
bool server_side_
Definition:
sslbase_io.hpp:64
acl
Definition:
acl_cpp_init.hpp:4
acl::sslbase_io::is_non_blocking
bool is_non_blocking(void) const
Definition:
sslbase_io.hpp:42
acl::sslbase_conf
Definition:
sslbase_conf.hpp:10
acl::stream_hook
Definition:
stream_hook.hpp:14
acl::sslbase_io::handshake_ok_
bool handshake_ok_
Definition:
sslbase_io.hpp:66
ACL_VSTREAM
Definition:
acl_vstream.h:66
acl::sslbase_io::refers_
atomic_long * refers_
Definition:
sslbase_io.hpp:67
stream_hook.hpp
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::sslbase_io::nblock_
bool nblock_
Definition:
sslbase_io.hpp:65
acl::sslbase_io::handshake_ok
bool handshake_ok(void)
Definition:
sslbase_io.hpp:51
acl::sslbase_io::sni_host_
string sni_host_
Definition:
sslbase_io.hpp:69
include
acl_cpp
stream
sslbase_io.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15