MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
载入中...
搜索中...
未找到
Public 成员函数 | Private 成员函数 | Private 属性 | 所有成员列表
BufferedWriter类 参考

支持以缓存模式写入数据到文件/socket 更多...

#include <buffered_writer.h>

Public 成员函数

 BufferedWriter (int fd)
 
 BufferedWriter (int fd, int32_t size)
 
RC close ()
 关闭缓存
 
RC write (const char *data, int32_t size, int32_t &write_size)
 写数据到文件/socket 更多...
 
RC writen (const char *data, int32_t size)
 写数据到文件/socket,全部写入成功返回成功 更多...
 
RC flush ()
 刷新缓存 更多...
 

Private 成员函数

RC flush_internal (int32_t size)
 刷新缓存 更多...
 

Private 属性

int fd_ = -1
 
RingBuffer buffer_
 

详细描述

支持以缓存模式写入数据到文件/socket

缓存使用ring buffer实现,当缓存满时会自动刷新缓存。 看起来直接使用fdopen也可以实现缓存写,不过fdopen会在close时直接关闭fd。

注解
在执行close时,描述符fd并不会被关闭

成员函数说明

◆ flush()

RC BufferedWriter::flush ( )

刷新缓存

将缓存中的数据全部写入文件/socket

◆ flush_internal()

RC BufferedWriter::flush_internal ( int32_t  size)
private

刷新缓存

期望缓存可以刷新size大小的数据,实际刷新的数据量可能小于size也可能大于size。 通常是在缓存满的时候,希望刷新掉一部分数据,然后继续写入。

参数
size期望刷新的数据大小

◆ write()

RC BufferedWriter::write ( const char *  data,
int32_t  size,
int32_t &  write_size 
)

写数据到文件/socket

缓存满会自动刷新缓存

参数
data要写入的数据
size要写入的数据大小
write_size实际写入的数据大小

◆ writen()

RC BufferedWriter::writen ( const char *  data,
int32_t  size 
)

写数据到文件/socket,全部写入成功返回成功

与write的区别就是会尝试一直写直到写成成功或者有不可恢复的错误

参数
data要写入的数据
size要写入的数据大小

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