MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
支持以缓存模式写入数据到文件/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。
RC BufferedWriter::flush | ( | ) |
刷新缓存
将缓存中的数据全部写入文件/socket
|
private |
刷新缓存
期望缓存可以刷新size大小的数据,实际刷新的数据量可能小于size也可能大于size。 通常是在缓存满的时候,希望刷新掉一部分数据,然后继续写入。
size | 期望刷新的数据大小 |
RC BufferedWriter::write | ( | const char * | data, |
int32_t | size, | ||
int32_t & | write_size | ||
) |
写数据到文件/socket
缓存满会自动刷新缓存
data | 要写入的数据 |
size | 要写入的数据大小 |
write_size | 实际写入的数据大小 |
RC BufferedWriter::writen | ( | const char * | data, |
int32_t | size | ||
) |
写数据到文件/socket,全部写入成功返回成功
与write的区别就是会尝试一直写直到写成成功或者有不可恢复的错误
data | 要写入的数据 |
size | 要写入的数据大小 |