Sese Framework  x.y.z
A cross-platform framework
载入中...
搜索中...
未找到
sese::io::BufferedStream类 参考final

流缓存类 更多...

#include <BufferedStream.h>

类 sese::io::BufferedStream 继承关系图:
sese::Noncopyable sese::io::Stream sese::io::InputStream sese::io::OutputStream

Public 类型

using Ptr = std::shared_ptr<BufferedStream>
 
- Public 类型 继承自 sese::io::Stream
typedef std::shared_ptr< StreamPtr
 
- Public 类型 继承自 sese::io::InputStream
typedef std::shared_ptr< InputStreamPtr
 
- Public 类型 继承自 sese::io::OutputStream
typedef std::shared_ptr< OutputStreamPtr
 

Public 成员函数

 BufferedStream (const Stream::Ptr &source, size_t buffer_size=STREAM_BYTE_STREAM_SIZE_FACTOR)
 
 ~BufferedStream () noexcept override
 
int64_t read (void *buffer, size_t length) override
 
void clear () noexcept
 清空当前读取标志位
 
int64_t write (const void *buffer, size_t length) override
 
int64_t flush () noexcept
 将当前缓存曲内容全部刷新至流中,并且重置当前写入标志位
 
void reset (const Stream::Ptr &source) noexcept
 
size_t getPosition () const
 
size_t getLength () const
 
size_t getCapacity () const
 
- Public 成员函数 继承自 sese::Noncopyable
 Noncopyable ()=default
 
virtual ~Noncopyable ()=default
 
 Noncopyable (const Noncopyable &)=delete
 删除拷贝相关构造函数
 
Noncopyableoperator= (const Noncopyable &)=delete
 删除拷贝相关构造函数
 
- Public 成员函数 继承自 sese::io::InputStream
virtual ~InputStream () noexcept=default
 
- Public 成员函数 继承自 sese::io::OutputStream
virtual ~OutputStream () noexcept=default
 
int64_t write (const std::string_view &buffer)
 
int64_t write (const text::StringView &buffer)
 
template<typename T >
int64_t write (std::vector< T > &buffer)
 
template<typename T , size_t N>
int64_t write (std::array< T, N > &buffer)
 

Private 成员函数

int64_t preRead ()
 

Private 属性

Stream::Ptr source
 源流指针
 
void * buffer = nullptr
 缓存指针
 
size_t pos
 已操作的数据大小
 
size_t len
 可供操作的数据大小
 
size_t cap
 缓存容量
 

详细描述

流缓存类

弃用
请考虑使用 BufferedOutputStreamBufferedInputStream

成员类型定义说明

◆ Ptr

构造及析构函数说明

◆ BufferedStream()

BufferedStream::BufferedStream ( const Stream::Ptr & source,
size_t buffer_size = STREAM_BYTE_STREAM_SIZE_FACTOR )
explicit

包装指定流

参数
source欲包装的流
buffer_size缓存大小

引用了 buffer, cap, len, pos , 以及 source.

◆ ~BufferedStream()

BufferedStream::~BufferedStream ( )
overridenoexcept

引用了 buffer , 以及 free().

成员函数说明

◆ clear()

void BufferedStream::clear ( )
noexcept

清空当前读取标志位

警告
执行此操作前请确保 BufferedStream 中的内容已全部读出,否则可能导致必要信息丢失

引用了 len , 以及 pos.

◆ flush()

int64_t BufferedStream::flush ( )
noexcept

将当前缓存曲内容全部刷新至流中,并且重置当前写入标志位

返回
刷新写入流中的字节数

引用了 buffer, len, pos , 以及 source.

被这些函数引用 write().

◆ getCapacity()

size_t sese::io::BufferedStream::getCapacity ( ) const
inlinenodiscard

引用了 cap.

◆ getLength()

size_t sese::io::BufferedStream::getLength ( ) const
inlinenodiscard

引用了 len.

◆ getPosition()

size_t sese::io::BufferedStream::getPosition ( ) const
inlinenodiscard

引用了 pos.

◆ preRead()

int64_t BufferedStream::preRead ( )
inlineprivate

引用了 buffer, cap, len, pos, read() , 以及 source.

被这些函数引用 read().

◆ read()

int64_t BufferedStream::read ( void * buffer,
size_t length )
overridevirtual
* 读取一定字节数
* 若读取大小不超过 BufferedStream 缓存大小,读取将经过自动缓存
* 反之则直接进行裸流读取,减少拷贝操作
* 
参数
buffer用户缓存指针
length用户缓存大小
返回
实际读取到的字节数

实现了 sese::io::InputStream.

引用了 buffer, cap, len, pos, preRead(), read() , 以及 source.

被这些函数引用 preRead() , 以及 read().

◆ reset()

void BufferedStream::reset ( const Stream::Ptr & source)
noexcept

重置输出源,这会导致原有数据被清除

参数
source

◆ write()

int64_t BufferedStream::write ( const void * buffer,
size_t length )
overridevirtual
* 写入一定字节数
* 若写入大小不超过 BufferedStream 缓存大小,写入将经过自动刷新
* 反之则直接进行裸流写入,减少拷贝操作
* 
参数
buffer用户缓存指针
length用户缓存大小
返回
实际写入的字节数

实现了 sese::io::OutputStream.

引用了 buffer, cap, flush(), len, pos , 以及 source.

类成员变量说明

◆ buffer

void* sese::io::BufferedStream::buffer = nullptr
private

缓存指针

被这些函数引用 BufferedStream(), flush(), preRead(), read(), write() , 以及 ~BufferedStream().

◆ cap

size_t sese::io::BufferedStream::cap
private

缓存容量

被这些函数引用 BufferedStream(), getCapacity(), preRead(), read() , 以及 write().

◆ len

size_t sese::io::BufferedStream::len
private

可供操作的数据大小

被这些函数引用 BufferedStream(), clear(), flush(), getLength(), preRead(), read() , 以及 write().

◆ pos

size_t sese::io::BufferedStream::pos
private

已操作的数据大小

被这些函数引用 BufferedStream(), clear(), flush(), getPosition(), preRead(), read() , 以及 write().

◆ source

Stream::Ptr sese::io::BufferedStream::source
private

源流指针

被这些函数引用 BufferedStream(), flush(), preRead(), read() , 以及 write().


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