acl  3.5.3.0
acl::aio_listen_stream类 参考

#include <aio_listen_stream.hpp>

+ 类 acl::aio_listen_stream 继承关系图:
+ acl::aio_listen_stream 的协作图:

Public 成员函数

 aio_listen_stream (aio_handle *handle)
 
void add_accept_callback (aio_accept_callback *callback)
 
void add_listen_callback (aio_listen_callback *callback)
 
aio_socket_streamaccept (void)
 
bool open (const char *addr, unsigned flag=0)
 
bool open (int fd)
 
bool open (ACL_VSTREAM *vstream)
 
bool open (ACL_ASTREAM *astream)
 
const char * get_addr (void) const
 
virtual void destroy (void)
 
- Public 成员函数 继承自 acl::aio_stream
 aio_stream (aio_handle *handle)
 
void close (void)
 
void add_close_callback (aio_callback *callback)
 
void add_timeout_callback (aio_callback *callback)
 
int del_close_callback (aio_callback *callback=NULL)
 
int del_timeout_callback (aio_callback *callback=NULL)
 
int disable_close_callback (aio_callback *callback=NULL)
 
int disable_timeout_callback (aio_callback *callback=NULL)
 
int enable_close_callback (aio_callback *callback=NULL)
 
int enable_timeout_callback (aio_callback *callback=NULL)
 
ACL_ASTREAMget_astream (void) const
 
ACL_VSTREAMget_vstream (void) const
 
int get_socket (void) const
 
int sock_handle (void) const
 
const char * get_peer (bool full=false) const
 
const char * get_local (bool full=false) const
 
aio_handleget_handle (void) const
 
stream_hooksetup_hook (stream_hook *hook)
 
stream_hookget_hook (void) const
 
stream_hookremove_hook (void)
 

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_handlehandle_
 
ACL_ASTREAMstream_
 
stream_hookhook_
 
unsigned status_
 

详细描述

异步监听网络流,该类接收来自于客户端的外来连接,同时该类只能 在堆上分配,不能在栈分配,应用可以调用 close 主动关闭流,流关闭 后该异步流对象自动释放,无需调用 delete 删除该类对象

在文件 aio_listen_stream.hpp52 行定义.

构造及析构函数说明

◆ aio_listen_stream()

acl::aio_listen_stream::aio_listen_stream ( aio_handle handle)

构造函数,用以构造异步监听流

参数
handle{aio_handle*} 异步引擎句柄

◆ ~aio_listen_stream()

virtual acl::aio_listen_stream::~aio_listen_stream ( void  )
protectedvirtual

成员函数说明

◆ accept()

aio_socket_stream* acl::aio_listen_stream::accept ( void  )

当调用 add_listen_callback 方式时,在 aio_listen_callback 子类 中的函数 listen_callback 里可以调用本方法来获得一个异步连接对象

返回
{aio_socket_stream*} 返回 NULL 表示获得连接失败

◆ add_accept_callback()

void acl::aio_listen_stream::add_accept_callback ( aio_accept_callback callback)

添加异步监听流接收到新客户端流时的回调函数

参数
callback{aio_accept_callback*}

◆ add_listen_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 模式

◆ destroy()

virtual void acl::aio_listen_stream::destroy ( void  )
virtual

重载基类方法,当异步流对象销毁时回调此方法

重载 acl::aio_stream .

◆ get_addr()

const char* acl::aio_listen_stream::get_addr ( void  ) const

获得服务器监听地址

返回
{const char*}

◆ open() [1/4]

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} 监听是否成功

◆ open() [2/4]

bool acl::aio_listen_stream::open ( int  fd)

使用套接字创建监听对象,该套接字句柄必须已经调用了 bind/listen 过程

参数
fd{int}
返回
{bool} 是否成功

◆ open() [3/4]

bool acl::aio_listen_stream::open ( ACL_VSTREAM vstream)

使用同步流对象创建非阻塞监听对象

参数
vstream{ACL_VSTREAM*} 非空对象
返回
{bool} 是否成功

◆ open() [4/4]

bool acl::aio_listen_stream::open ( ACL_ASTREAM astream)

使用非阻塞流对象创建非阻塞监听对象

参数
astream{ACL_ASTREAM*} 非空对象
返回
{bool} 是否成功

该类的文档由以下文件生成: