export function sf_file_writer_direct_write

use_iouring
YuQing 2025-03-15 10:10:01 +08:00
parent 7ee7e7b535
commit 3815c0b2ce
3 changed files with 15 additions and 4 deletions

View File

@ -257,7 +257,7 @@ static int do_write_to_file(SFFileWriterInfo *writer,
return 0; return 0;
} }
static int check_write_to_file(SFFileWriterInfo *writer, int sf_file_writer_direct_write(SFFileWriterInfo *writer,
char *buff, const int len) char *buff, const int len)
{ {
int result; int result;
@ -293,7 +293,7 @@ int sf_file_writer_flush(SFFileWriterInfo *writer)
return 0; return 0;
} }
if ((result=check_write_to_file(writer, writer-> if ((result=sf_file_writer_direct_write(writer, writer->
binlog_buffer.buff, len)) == 0) binlog_buffer.buff, len)) == 0)
{ {
if (writer->flags & SF_FILE_WRITER_FLAGS_WANT_DONE_VERSION) { if (writer->flags & SF_FILE_WRITER_FLAGS_WANT_DONE_VERSION) {
@ -359,8 +359,8 @@ int sf_file_writer_deal_versioned_buffer(SFFileWriterInfo *writer,
} }
} }
if ((result=check_write_to_file(writer, buffer->buff, if ((result=sf_file_writer_direct_write(writer, buffer->
buffer->length)) == 0) buff, buffer->length)) == 0)
{ {
if (writer->flags & SF_FILE_WRITER_FLAGS_WANT_DONE_VERSION) { if (writer->flags & SF_FILE_WRITER_FLAGS_WANT_DONE_VERSION) {
writer->last_versions.pending = version; writer->last_versions.pending = version;

View File

@ -84,6 +84,9 @@ int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path,
void sf_file_writer_destroy(SFFileWriterInfo *writer); void sf_file_writer_destroy(SFFileWriterInfo *writer);
int sf_file_writer_direct_write(SFFileWriterInfo *writer,
char *buff, const int len);
int sf_file_writer_deal_versioned_buffer(SFFileWriterInfo *writer, int sf_file_writer_deal_versioned_buffer(SFFileWriterInfo *writer,
BufferInfo *buffer, const int64_t version); BufferInfo *buffer, const int64_t version);
@ -247,6 +250,13 @@ int sf_file_writer_set_binlog_start_index(SFFileWriterInfo *writer,
int sf_file_writer_set_binlog_write_index(SFFileWriterInfo *writer, int sf_file_writer_set_binlog_write_index(SFFileWriterInfo *writer,
const int last_index); const int last_index);
static inline int sf_file_writer_rotate_file(SFFileWriterInfo *writer)
{
int last_index;
last_index = sf_file_writer_get_current_write_index(writer);
return sf_file_writer_set_binlog_write_index(writer, last_index + 1);
}
int sf_file_writer_get_last_lines(const char *data_path, int sf_file_writer_get_last_lines(const char *data_path,
const char *subdir_name, const int current_write_index, const char *subdir_name, const int current_write_index,
char *buff, const int buff_size, int *count, int *length); char *buff, const int buff_size, int *count, int *length);

View File

@ -44,6 +44,7 @@
#define SF_BINLOG_BUFFER_PRODUCER_DATA_LENGTH(bf) ((bf).data_end - (bf).buff) #define SF_BINLOG_BUFFER_PRODUCER_DATA_LENGTH(bf) ((bf).data_end - (bf).buff)
#define SF_BINLOG_BUFFER_PRODUCER_BUFF_REMAIN(bf) ((bf).buff_end - (bf).data_end) #define SF_BINLOG_BUFFER_PRODUCER_BUFF_REMAIN(bf) ((bf).buff_end - (bf).data_end)
#define SF_BINLOG_BUFFER_CONSUMER_DATA_LENGTH(bf) ((bf).current - (bf).buff)
#define SF_BINLOG_BUFFER_CONSUMER_DATA_REMAIN(bf) ((bf).data_end - (bf).current) #define SF_BINLOG_BUFFER_CONSUMER_DATA_REMAIN(bf) ((bf).data_end - (bf).current)
typedef int (*sf_accept_done_callback)(struct fast_task_info *task, typedef int (*sf_accept_done_callback)(struct fast_task_info *task,