acl/lib_acl_cpp/include/acl_cpp/stream/stream.hpp
zsxxsz dcdebd5f9c add thread, thread_pool for lib_acl_cpp
add thread, thread_pool for lib_acl_cpp, and other bugfix
2013-10-19 23:13:19 +08:00

90 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "acl_cpp/acl_cpp_define.hpp"
struct ACL_VSTREAM;
namespace acl {
class ACL_CPP_API stream
{
public:
stream(void);
virtual ~stream(void) = 0;
/**
* 纯虚函数, 本类不能直接被实例化, 要求子类必须实现流关闭函数
* @return {bool} true: 关闭成功; false: 关闭失败
*/
virtual bool close(void) = 0;
/**
* 判断流是否已经结束
* @return {bool} true: 流已经结束; false: 流未结束
*/
bool eof(void) const;
/**
* 当前流是否处理打开状态
* @return {bool} true: 流已经打开; false: 流未打开
*/
bool opened(void) const;
/**
* 获得当前流的 ACL_VSTREAM 流对象
* @return {ACL_VSTREAM*}
*/
ACL_VSTREAM* get_vstream() const;
/**
* 解绑 ACL_VSTREAM 与流对象的绑定关系,同时将 ACL_VSTREAM 返回
* 给用户,即将该 ACL_VSTREAM的管理权交给用户本流对象在释放时
* 不会关闭该 ACL_VSTREAM ,但用户接管该 ACL_VSTREAM 后用完后
* 必须将其关闭;解绑后除了 close/open 的调用有意义外,其它的调用
* (包括流对象读写在内)都无意义
* @return {ACL_VSTREAM} 返回 NULL 表示流对象已经将 ACL_VSTREAM 解绑
*/
ACL_VSTREAM* unbind();
/**
* 打开流对象,如果流已经打开,则不会重复打开
*/
void open_stream(void);
/**
* 重新打开流对象,如果流已经打开则先释放流对象再打开
*/
void reopen_stream(void);
/**
* 设置流的绑定对象
* @param ctx {void*}
*/
void set_ctx(void* ctx);
/**
* 获得与流绑定的对象
* @return {void*}
*/
void* get_ctx() const;
/**
* 设置流的读写超时时间
* @param n {int} 超时时间(单位: 秒)
*/
void set_rw_timeout(int n);
/**
* 获得当前流的读写超时时间
* @return {int} 获得流的读写超时时间(秒)
*/
int get_rw_timeout(void) const;
protected:
ACL_VSTREAM *stream_;
bool eof_;
bool opened_;
void* ctx_;
};
} // namespace acl