acl  3.5.3.0
acl::aio_istream类 参考

#include <aio_istream.hpp>

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

Public 成员函数

 aio_istream (aio_handle *handle)
 
 aio_istream (aio_handle *handle, int fd)
 
void add_read_callback (aio_callback *callback)
 
int del_read_callback (aio_callback *callback=NULL)
 
int disable_read_callback (aio_callback *callback=NULL)
 
int enable_read_callback (aio_callback *callback=NULL)
 
void gets (int timeout=0, bool nonl=true, long long int delay=0, aio_timer_reader *callback=NULL)
 
void read (int count=0, int timeout=0, long long int delay=0, aio_timer_reader *callback=NULL)
 
void read_wait (int timeout=0)
 
void disable_read (void)
 
void keep_read (bool onoff)
 
bool keep_read (void) const
 
aio_istreamset_buf_max (int max)
 
int get_buf_max (void) const
 
- 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_istream (void)
 
virtual void destroy (void)
 
void hook_read (void)
 
- Protected 成员函数 继承自 acl::aio_stream
virtual ~aio_stream (void)
 
void hook_error (void)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

友元

class aio_timer_reader
 

额外继承的成员函数

- 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 函数以释放该类对象

在文件 aio_istream.hpp60 行定义.

构造及析构函数说明

◆ aio_istream() [1/2]

acl::aio_istream::aio_istream ( aio_handle handle)

构造函数

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

◆ aio_istream() [2/2]

acl::aio_istream::aio_istream ( aio_handle handle,
int  fd 
)

构造函数,创建异步读流对象,并 hook 读过程及关闭/超时过程

参数
handle{aio_handle*} 异步事件引擎句柄
fd{int} 连接套接口句柄

◆ ~aio_istream()

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

成员函数说明

◆ add_read_callback()

void acl::aio_istream::add_read_callback ( aio_callback callback)

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

参数
callback{aio_callback*} 继承 aio_callback 的子类回调类对象, 当异步流有数据时会先调用此回调类对象中的 read_callback 接口

◆ del_read_callback()

int acl::aio_istream::del_read_callback ( aio_callback callback = NULL)

从读回调对象集合中删除

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

◆ destroy()

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

释放动态类对象的虚函数

重载 acl::aio_stream .

acl::aio_socket_stream , 以及 acl::aio_fstream 重载.

◆ disable_read()

void acl::aio_istream::disable_read ( void  )

禁止异步流的异步读状态,将该异步流从异步引擎的监控中 移除,直到用户调用任何一个异步读操作(此时,异步引擎会 自动重新监控该流的可读状态)

◆ disable_read_callback()

int acl::aio_istream::disable_read_callback ( aio_callback callback = NULL)

禁止回调对象类集合中的某个回调类对象,但并不从回调类对象 集合中删除,只是不被调用而已

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

◆ enable_read_callback()

int acl::aio_istream::enable_read_callback ( aio_callback callback = NULL)

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

参数
callback{aio_callback*} 从 aio_callback 继承的子类对象指针, 若该值为空,则启用所有的读回调对象
返回
{int} 返回被启用的回调对象的个数

◆ get_buf_max()

int acl::aio_istream::get_buf_max ( void  ) const

获得当前接收缓冲区的最大长度限制

返回
{int} 返回值 <= 0 表示没有限制

◆ gets()

void acl::aio_istream::gets ( int  timeout = 0,
bool  nonl = true,
long long int  delay = 0,
aio_timer_reader callback = NULL 
)

异步读取一行数据,当延迟异步读时,如果连续调用此过程, 则只有最后一个延迟读操作生效

参数
timeout{int} 读超时时间(秒),若为 0 则表示 永远等待直到读到完整一行数据或出错
nonl{bool} 是否自动去掉尾部的回车换行符
delay{int64} 如果对方发送数据比较快时,此参数 大于 0 时可以延迟接收对方的数据,该值控制延迟读数据 的时间(单位为微秒)
callback{aio_timer_reader*} 定时器到达时的回调函数类对象, 当 delay > 0,如果该值为空,则采用缺省的对象

◆ hook_read()

void acl::aio_istream::hook_read ( void  )
protected

注册可读的回调函数

◆ keep_read() [1/2]

void acl::aio_istream::keep_read ( bool  onoff)

设置流是否采用连接读功能

参数
onoff{bool}

◆ keep_read() [2/2]

bool acl::aio_istream::keep_read ( void  ) const

获得流是否是设置了连续读功能

返回
{bool}

◆ read()

void acl::aio_istream::read ( int  count = 0,
int  timeout = 0,
long long int  delay = 0,
aio_timer_reader callback = NULL 
)

异步读取数据,当延迟异步读时,如果连续调用此过程, 则只有最后一个延迟读操作生效

参数
count{int} 所要求读到的数据量,如果为 0 则只要有数据 可读就返回,否则直到读超时或读出错或读满足所要求的字节数
timeout{int} 读超时时间(秒),若为 0 则表示 永远等待直到读到所要求的数据或出错
delay{int64} 如果对方发送数据比较快时,此参数 大于 0 时可以延迟接收对方的数据,该值控制延迟读数据 的时间(单位为微秒)
callback{aio_timer_reader*} 定时器到达时的回调函数类对象, 如果该值为空,则采用缺省的对象

◆ read_wait()

void acl::aio_istream::read_wait ( int  timeout = 0)

异步等待连接流可读,该函数设置异步流的读监听状态,当有数据可读 时,回调函数被触发,由用户自己负责数据的读取

参数
timeout{int} 读超时时间(秒),当该值为 0 时,则没有读超时

◆ set_buf_max()

aio_istream& acl::aio_istream::set_buf_max ( int  max)

设置接收缓冲区的最大长度,以避免缓冲区溢出,默认值为 0 表示不限制

参数
max{int}
返回
{aio_istream&}

友元及相关函数文档

◆ aio_timer_reader

friend class aio_timer_reader
friend

在文件 aio_istream.hpp214 行定义.


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