acl  3.5.3.0
acl::aio_stream类 参考

#include <aio_stream.hpp>

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

Public 成员函数

 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 类型

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 成员函数

virtual ~aio_stream (void)
 
virtual void destroy (void)
 
void hook_error (void)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Protected 属性

aio_handlehandle_
 
ACL_ASTREAMstream_
 
stream_hookhook_
 
unsigned status_
 

详细描述

异步流基类,该类为纯虚类,不能被直接实例化,只能被子类继承使用 该类只能在堆上分配,不能在栈上分配

在文件 aio_stream.hpp89 行定义.

成员枚举类型说明

◆ anonymous enum

anonymous enum
protected
枚举值
STATUS_HOOKED_ERROR 
STATUS_HOOKED_READ 
STATUS_HOOKED_WRITE 
STATUS_HOOKED_OPEN 
STATUS_CONN_OPENED 

在文件 aio_stream.hpp259 行定义.

259  {
260  // 是否调用了 hook_xxx 函数对应的标志位
262  STATUS_HOOKED_READ = 1 << 1,
263  STATUS_HOOKED_WRITE = 1 << 2,
264  STATUS_HOOKED_OPEN = 1 << 3,
265 
266  // 对于 aio_socket_stream 流表示是否连接已建立
267  STATUS_CONN_OPENED = 1 << 4,
268  };

构造及析构函数说明

◆ aio_stream()

acl::aio_stream::aio_stream ( aio_handle handle)

构造函数

参数
handle{aio_handle*}

◆ ~aio_stream()

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

成员函数说明

◆ add_close_callback()

void acl::aio_stream::add_close_callback ( aio_callback callback)

添加关闭时的回调类对象指针,如果该回调类对象已经存在,则只是 使该对象处于打开可用状态

参数
callback{aio_callback*} 继承 aio_callback 的子类回调类对象, 当异步流关闭前会先调用此回调类对象中的 close_callback 接口

◆ add_timeout_callback()

void acl::aio_stream::add_timeout_callback ( aio_callback callback)

添加超时时的回调类对象指针,如果该回调类对象已经存在,则只是 使该对象处于打开可用状态

参数
callback{aio_callback*} 继承 aio_callback 的子类回调类对象, 当异步流关闭前会先调用此回调类对象中的 timeout_callback 接口

◆ close()

void acl::aio_stream::close ( void  )

关闭异步流

◆ del_close_callback()

int acl::aio_stream::del_close_callback ( aio_callback callback = NULL)

删除关闭时的回调类对象指针

参数
callback{aio_callback*} 从 aio_callback 继承的子类对象指针, 若该值为空,则删除所有的关闭回调对象
返回
{int} 返回被从回调对象集合中删除的回调对象的个数

◆ del_timeout_callback()

int acl::aio_stream::del_timeout_callback ( aio_callback callback = NULL)

删除超时时的回调类对象指针

参数
callback{aio_callback*} 从 aio_callback 继承的子类对象指针, 若该值为空,则删除所有的超时回调对象
返回
{int} 返回被从回调对象集合中删除的回调对象的个数

◆ destroy()

virtual void acl::aio_stream::destroy ( void  )
protectedvirtual

通过此函数来动态释放只能在堆上分配的异步流类对象

acl::aio_istream, acl::aio_ostream, acl::aio_listen_stream, acl::aio_socket_stream , 以及 acl::aio_fstream 重载.

◆ disable_close_callback()

int acl::aio_stream::disable_close_callback ( aio_callback callback = NULL)

禁止关闭的回调类对象,但并不从关闭对象集合中删除

参数
callback{aio_callback*} 从 aio_callback 继承的子类对象指针, 若该值为空,则禁止所有的关闭回调对象
返回
{int} 返回被从回调对象集合中禁用的回调对象的个数

◆ disable_timeout_callback()

int acl::aio_stream::disable_timeout_callback ( aio_callback callback = NULL)

禁止超时的回调类对象,但并不从超时对象集合中删除

参数
callback{aio_callback*} 从 aio_callback 继承的子类对象指针, 若该值为空,则禁止所有的超时回调对象
返回
{int} 返回被从回调对象集合中禁用的回调对象的个数

◆ enable_close_callback()

int acl::aio_stream::enable_close_callback ( aio_callback callback = NULL)

启用所有的回调对象被调用

参数
callback{aio_callback*} 启用指定的回调对象,如果该值为空, 则启用所有的关闭回调对象
返回
{int} 返回被启用的回调对象的个数

◆ enable_timeout_callback()

int acl::aio_stream::enable_timeout_callback ( aio_callback callback = NULL)

启用所有的回调对象被调用

参数
callback{aio_callback*} 启用指定的回调对象,如果该值为空, 则启用所有的超时回调对象
返回
{int} 返回被启用的回调对象的个数

◆ get_astream()

ACL_ASTREAM* acl::aio_stream::get_astream ( void  ) const

获得异步流对象 ACL_ASTREAM

返回
{ACL_ASTREAM*}

◆ get_handle()

aio_handle& acl::aio_stream::get_handle ( void  ) const

获得异步流事件句柄

返回
{aio_handle&}

◆ get_hook()

stream_hook* acl::aio_stream::get_hook ( void  ) const

获得当前注册的流读写对象

返回
{stream_hook*}

◆ get_local()

const char* acl::aio_stream::get_local ( bool  full = false) const

获得连接的本地地址

参数
full{bool} 是否获得完整地址,即:IP:PORT,如果该参数 为 false,则仅返回 IP,否则返回 IP:PORT
返回
{const char*} 该连接的本地地址,若返回值 == "" 则表示 无法获得本地地址

◆ get_peer()

const char* acl::aio_stream::get_peer ( bool  full = false) const

获得远程连接的地址

参数
full{bool} 是否获得完整地址,即:IP:PORT,如果该参数 为 false,则仅返回 IP,否则返回 IP:PORT
返回
{const char*} 远程连接地址,若返回值 == '\0' 则表示 无法获得远程连接地址

◆ get_socket()

int acl::aio_stream::get_socket ( void  ) const

获得异步流中的 SOCKET 描述符

返回
{ACL_SOCKET} 若不存在则返回 -1(UNIX) 或 INVALID_SOCKET(win32)

◆ get_vstream()

ACL_VSTREAM* acl::aio_stream::get_vstream ( void  ) const

获得异步流对象中的同步流对象 ACL_VSTREAM

返回
{ACL_VSTREAM*}

◆ hook_error()

void acl::aio_stream::hook_error ( void  )
protected

子类应在创建成功后调用该函数通知基类增加异步流句柄数, 同时 hook 流关闭及流超时时的回调过程

◆ remove_hook()

stream_hook* acl::aio_stream::remove_hook ( void  )

删除当前注册的流读写对象并返回该对象,恢复缺省的读写过程

返回
{stream_hook*}

◆ setup_hook()

stream_hook* acl::aio_stream::setup_hook ( stream_hook hook)
注册读写流对象,内部自动调用 hook->open 过程,如果成功,则返回之前注册

的对象(可能为NULL),若失败则返回与输入参数相同的指针,应用可以通过判断 返回值与输入值是否相同来判断注册流对象是否成功 xxx: 在调用此方法前必须保证流连接已经创建

参数
hook{stream_hook*} 非空对象指针
返回
{stream_hook*} 返回值与输入值不同则表示成功

◆ sock_handle()

int acl::aio_stream::sock_handle ( void  ) const
inline

在文件 aio_stream.hpp188 行定义.

190  {
191  return get_socket();
192  }
int get_socket(void) const

类成员变量说明

◆ handle_

aio_handle* acl::aio_stream::handle_
protected

在文件 aio_stream.hpp241 行定义.

◆ hook_

stream_hook* acl::aio_stream::hook_
protected

在文件 aio_stream.hpp243 行定义.

◆ status_

unsigned acl::aio_stream::status_
protected

在文件 aio_stream.hpp269 行定义.

◆ stream_

ACL_ASTREAM* acl::aio_stream::stream_
protected

在文件 aio_stream.hpp242 行定义.


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