acl  3.5.3.0
acl::stream类 参考abstract

#include <stream.hpp>

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

Public 成员函数

 stream (void)
 
virtual ~stream (void)=0
 
bool close (void)
 
bool eof (void) const
 
void clear_eof (void)
 
bool opened (void) const
 
ACL_VSTREAMget_vstream (void) const
 
ACL_VSTREAMunbind (void)
 
bool set_ctx (void *ctx, const char *key=NULL, bool replace=true)
 
void * get_ctx (const char *key=NULL) const
 
void * del_ctx (const char *key=NULL)
 
void set_rw_timeout (int n)
 
void set_time_unit (time_unit_t unit)
 
int get_rw_timeout (void) const
 
stream_hooksetup_hook (stream_hook *hook)
 
stream_hookget_hook (void) const
 
stream_hookremove_hook (void)
 
stringget_buf (void)
 
dbuf_poolget_dbuf (void)
 

Protected 成员函数

void open_stream (bool is_file=false)
 
void reopen_stream (bool is_file=false)
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Protected 属性

stream_hookhook_
 
ACL_VSTREAMstream_
 
stringbuf_
 
dbuf_pooldbuf_
 
void * default_ctx_
 
std::map< string, void * > * ctx_table_
 
bool eof_
 
bool opened_
 

详细描述

在文件 stream.hpp24 行定义.

构造及析构函数说明

◆ stream()

acl::stream::stream ( void  )

◆ ~stream()

virtual acl::stream::~stream ( void  )
pure virtual

成员函数说明

◆ clear_eof()

void acl::stream::clear_eof ( void  )

清除流结束标志位,即将 eof_ 标志位置为 false

◆ close()

bool acl::stream::close ( void  )

调用本函数关闭流连接

返回
{bool} true: 关闭成功; false: 关闭失败

◆ del_ctx()

void* acl::stream::del_ctx ( const char *  key = NULL)

删除流中绑定的对象

参数
key{const char*} 非空时删除对应该 key 的 ctx 对象,否则删除 缺省的 ctx 对象
返回
{void*} 当对象不存在时返回 NULL,成功删除后返回该对象

◆ eof()

bool acl::stream::eof ( void  ) const

判断流是否已经结束

返回
{bool} true: 流已经结束; false: 流未结束

◆ get_buf()

string& acl::stream::get_buf ( void  )

因为 stream 的生命周期较长,使用者使用 stream 对象中的内部缓存区可以 适当减少缓存区的频繁创建与释放

返回
{string&}

◆ get_ctx()

void* acl::stream::get_ctx ( const char *  key = NULL) const

获得与流绑定的对象

参数
key{const char* key} 非空时使用该 key 查询对应的 ctx 对象, 否则返回缺省的 ctx 对象
返回
{void*}

◆ get_dbuf()

dbuf_pool& acl::stream::get_dbuf ( void  )

获得与 stream 生命周期相同的 dbuf 内存分配器

返回
{dbuf_pool&}

◆ get_hook()

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

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

返回
{stream_hook*}

◆ get_rw_timeout()

int acl::stream::get_rw_timeout ( void  ) const

获得当前流的读写超时时间

返回
{int} 获得流的读写超时时间(秒)

◆ get_vstream()

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

获得当前流的 ACL_VSTREAM 流对象

返回
{ACL_VSTREAM*}

◆ open_stream()

void acl::stream::open_stream ( bool  is_file = false)
protected

打开流对象,如果流已经打开,则不会重复打开

◆ opened()

bool acl::stream::opened ( void  ) const

当前流是否处理打开状态

返回
{bool} true: 流已经打开; false: 流未打开

◆ remove_hook()

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

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

返回
{stream_hook*}

◆ reopen_stream()

void acl::stream::reopen_stream ( bool  is_file = false)
protected

重新打开流对象,如果流已经打开则先释放流对象再打开

◆ set_ctx()

bool acl::stream::set_ctx ( void *  ctx,
const char *  key = NULL,
bool  replace = true 
)

设置流的绑定对象

参数
ctx{void*}
key{const char* } 标识该 ctx 的键
replace{bool} 当对应的 KEY 存在时是否允许覆盖
返回
{bool} 当 replace 为 false 且 key 已经存在时则返回 false

◆ set_rw_timeout()

void acl::stream::set_rw_timeout ( int  n)

设置流的读写超时时间,只有当内部流对象建立后调用本方法才有效

参数
n{int} 超时时间,该值 > 0 则启用超时检测过程,否则将会一直阻塞直到 可读或出错,该值的单位取决 于第二个参数

◆ set_time_unit()

void acl::stream::set_time_unit ( time_unit_t  unit)

设置内部超时时间单位类型,只有当内部流对象建立后调用本方法才有效

参数
unit{time_unit_t} 时间单位类型

◆ setup_hook()

stream_hook* acl::stream::setup_hook ( stream_hook hook)

注册读写流对象,内部会自动调用 hook->open 过程,如果成功,则返回之前注册的对象 (可能为NULL),若失败则返回与输入参数相同的指针,应用可以通过判断返回值与输入值 是否相同来判断注册流对象是否成功 xxx: 在调用此方法前必须保证流连接已经创建

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

◆ unbind()

ACL_VSTREAM* acl::stream::unbind ( void  )

解绑 ACL_VSTREAM 与流对象的绑定关系,同时将 ACL_VSTREAM 返回 给用户,即将该 ACL_VSTREAM的管理权交给用户,本流对象在释放时 不会关闭该 ACL_VSTREAM ,但用户接管该 ACL_VSTREAM 后用完后 必须将其关闭;解绑后除了 close/open 的调用有意义外,其它的调用 (包括流对象读写在内)都无意义

返回
{ACL_VSTREAM} 返回 NULL 表示流对象已经将 ACL_VSTREAM 解绑

类成员变量说明

◆ buf_

string* acl::stream::buf_
protected

在文件 stream.hpp163 行定义.

◆ ctx_table_

std::map<string, void*>* acl::stream::ctx_table_
protected

在文件 stream.hpp167 行定义.

◆ dbuf_

dbuf_pool* acl::stream::dbuf_
protected

在文件 stream.hpp164 行定义.

◆ default_ctx_

void* acl::stream::default_ctx_
protected

在文件 stream.hpp166 行定义.

◆ eof_

bool acl::stream::eof_
protected

在文件 stream.hpp169 行定义.

◆ hook_

stream_hook* acl::stream::hook_
protected

在文件 stream.hpp161 行定义.

◆ opened_

bool acl::stream::opened_
protected

在文件 stream.hpp170 行定义.

◆ stream_

ACL_VSTREAM* acl::stream::stream_
protected

在文件 stream.hpp162 行定义.


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