add function sf_file_writer_flush_buffer

use_iouring
YuQing 2025-03-05 20:05:56 +08:00
parent f9d8c3d070
commit e095ce45c2
2 changed files with 20 additions and 5 deletions

View File

@ -394,7 +394,8 @@ int sf_file_writer_deal_versioned_buffer(SFFileWriterInfo *writer,
return 0;
}
int sf_file_writer_save_buffer(SFFileWriterInfo *writer, const int length)
int sf_file_writer_save_buffer_ex(SFFileWriterInfo *writer,
const int length, const bool flush)
{
int result;
@ -408,9 +409,8 @@ int sf_file_writer_save_buffer(SFFileWriterInfo *writer, const int length)
}
writer->binlog_buffer.data_end += length;
if (SF_BINLOG_BUFFER_PRODUCER_BUFF_REMAIN(writer->binlog_buffer) <
writer->cfg.max_record_size)
if (flush || SF_BINLOG_BUFFER_PRODUCER_BUFF_REMAIN(writer->
binlog_buffer) < writer->cfg.max_record_size)
{
return sf_file_writer_flush(writer);
} else {

View File

@ -100,7 +100,22 @@ int sf_file_writer_fsync(SFFileWriterInfo *writer);
#define SF_FILE_WRITER_NEXT_DATA_VERSION(writer) \
++((writer)->last_versions.pending)
int sf_file_writer_save_buffer(SFFileWriterInfo *writer, const int length);
int sf_file_writer_save_buffer_ex(SFFileWriterInfo *writer,
const int length, const bool flush);
static inline int sf_file_writer_save_buffer(
SFFileWriterInfo *writer, const int length)
{
const bool flush = false;
return sf_file_writer_save_buffer_ex(writer, length, flush);
}
static inline int sf_file_writer_flush_buffer(
SFFileWriterInfo *writer, const int length)
{
const bool flush = true;
return sf_file_writer_save_buffer_ex(writer, length, flush);
}
static inline void sf_file_writer_set_flags(
SFFileWriterInfo *writer, const short flags)