acl
3.5.3.0
|
#include <aio_listen_stream.hpp>
Protected 成员函数 | |
virtual | ~aio_listen_stream (void) |
Protected 成员函数 继承自 acl::aio_stream | |
virtual | ~aio_stream (void) |
void | hook_error (void) |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
额外继承的成员函数 | |
Protected 类型 继承自 acl::aio_stream | |
enum | { STATUS_HOOKED_ERROR = 1, STATUS_HOOKED_READ = 1 << 1, STATUS_HOOKED_WRITE = 1 << 2, STATUS_HOOKED_OPEN = 1 << 3, STATUS_CONN_OPENED = 1 << 4 } |
Protected 属性 继承自 acl::aio_stream | |
aio_handle * | handle_ |
ACL_ASTREAM * | stream_ |
stream_hook * | hook_ |
unsigned | status_ |
异步监听网络流,该类接收来自于客户端的外来连接,同时该类只能 在堆上分配,不能在栈分配,应用可以调用 close 主动关闭流,流关闭 后该异步流对象自动释放,无需调用 delete 删除该类对象
在文件 aio_listen_stream.hpp 第 52 行定义.
acl::aio_listen_stream::aio_listen_stream | ( | aio_handle * | handle | ) |
构造函数,用以构造异步监听流
handle | {aio_handle*} 异步引擎句柄 |
|
protectedvirtual |
aio_socket_stream* acl::aio_listen_stream::accept | ( | void | ) |
当调用 add_listen_callback 方式时,在 aio_listen_callback 子类 中的函数 listen_callback 里可以调用本方法来获得一个异步连接对象
void acl::aio_listen_stream::add_accept_callback | ( | aio_accept_callback * | callback | ) |
添加异步监听流接收到新客户端流时的回调函数
callback | {aio_accept_callback*} |
void acl::aio_listen_stream::add_listen_callback | ( | aio_listen_callback * | callback | ) |
添加异步监听流有客户端连接到达时的回调函数
callback | {aio_listen_stream*} 注意:本方法与上面 add_accept_callback 的区别,本方法是 reactor 模式,而 add_accept_callback 则是 proactor 模式 |
|
virtual |
重载基类方法,当异步流对象销毁时回调此方法
重载 acl::aio_stream .
const char* acl::aio_listen_stream::get_addr | ( | void | ) | const |
获得服务器监听地址
bool acl::aio_listen_stream::open | ( | const char * | addr, |
unsigned | flag = 0 |
||
) |
开始监听某个指定地址,可以为网络套接口,也可以为域套接口,
addr | {const char*} 监听地址,TCP监听地址或域监听地址 格式: 针对TCP连接:IP:PORT,如:127.0.0.1:9001 针对域套接口:{path},如:/tmp/my.sock,在 Linux 平台,还可以支持 Linux abstract unix domain socket,需要地址首字节为'@',在 Linux 平台下,acl 内部如果检测到路径首字节为 '@',则内部自动切到 Linux abstract unix domain socket 监听模式(其中的 @ 符只是用来标记,内 部的监听地址会自动去掉) |
flag | {unsigned} 创建监听套接口时的打开标志位,见 server_socket.hpp |
bool acl::aio_listen_stream::open | ( | int | fd | ) |
使用套接字创建监听对象,该套接字句柄必须已经调用了 bind/listen 过程
fd | {int} |
bool acl::aio_listen_stream::open | ( | ACL_VSTREAM * | vstream | ) |
使用同步流对象创建非阻塞监听对象
vstream | {ACL_VSTREAM*} 非空对象 |
bool acl::aio_listen_stream::open | ( | ACL_ASTREAM * | astream | ) |
使用非阻塞流对象创建非阻塞监听对象
astream | {ACL_ASTREAM*} 非空对象 |