diff --git a/src/sf_file_writer.c b/src/sf_file_writer.c index 2ac47ed..4ceeac9 100644 --- a/src/sf_file_writer.c +++ b/src/sf_file_writer.c @@ -48,10 +48,6 @@ snprintf(filename, size, "%s/%s/%s_index.dat", \ data_path, subdir_name, file_prefix) -#define GET_BINLOG_INDEX_FILENAME(writer, filename, size) \ - GET_BINLOG_INDEX_FILENAME_EX(writer->cfg.data_path, \ - writer->cfg.subdir_name, writer->cfg.file_prefix, filename, size) - const char *sf_file_writer_get_index_filename(const char *data_path, const char *subdir_name, char *filename, const int size) { @@ -60,23 +56,24 @@ const char *sf_file_writer_get_index_filename(const char *data_path, return filename; } -static int write_to_binlog_index_file(SFFileWriterInfo *writer) +int sf_file_writer_write_to_binlog_index_file_ex(const char *data_path, + const char *subdir_name, const char *file_prefix, + const int start_index, const int last_index, + const int compress_index) { char filename[PATH_MAX]; char buff[256]; int result; int len; - GET_BINLOG_INDEX_FILENAME(writer, filename, sizeof(filename)); + GET_BINLOG_INDEX_FILENAME_EX(data_path, subdir_name, + file_prefix, filename, sizeof(filename)); len = sprintf(buff, "%s=%d\n" "%s=%d\n" "%s=%d\n", - BINLOG_INDEX_ITEM_START_INDEX, - writer->binlog.start_index, - BINLOG_INDEX_ITEM_CURRENT_WRITE, - writer->binlog.last_index, - BINLOG_INDEX_ITEM_CURRENT_COMPRESS, - writer->binlog.compress_index); + BINLOG_INDEX_ITEM_START_INDEX, start_index, + BINLOG_INDEX_ITEM_CURRENT_WRITE, last_index, + BINLOG_INDEX_ITEM_CURRENT_COMPRESS, compress_index); if ((result=safeWriteToFile(filename, buff, len)) != 0) { logError("file: "__FILE__", line: %d, " "write to file \"%s\" fail, errno: %d, error info: %s", @@ -86,6 +83,14 @@ static int write_to_binlog_index_file(SFFileWriterInfo *writer) return result; } +static inline int write_to_binlog_index_file(SFFileWriterInfo *writer) +{ + return sf_file_writer_write_to_binlog_index_file_ex( + writer->cfg.data_path, writer->cfg.subdir_name, + writer->cfg.file_prefix, writer->binlog.start_index, + writer->binlog.last_index, writer->binlog.compress_index); +} + static int get_binlog_info_from_file(const char *data_path, const char *subdir_name, int *start_index, int *last_index, int *compress_index) diff --git a/src/sf_file_writer.h b/src/sf_file_writer.h index 936bbd8..8ad1f10 100644 --- a/src/sf_file_writer.h +++ b/src/sf_file_writer.h @@ -236,6 +236,16 @@ int sf_file_writer_get_last_lines(const char *data_path, const char *subdir_name, const int current_write_index, char *buff, const int buff_size, int *count, int *length); +int sf_file_writer_write_to_binlog_index_file_ex(const char *data_path, + const char *subdir_name, const char *file_prefix, + const int start_index, const int last_index, + const int compress_index); + +#define sf_file_writer_write_to_binlog_index_file(data_path, \ + subdir_name, start_index, last_index) \ + sf_file_writer_write_to_binlog_index_file_ex(data_path, subdir_name, \ + SF_BINLOG_FILE_PREFIX, start_index, last_index, 0) + #ifdef __cplusplus } #endif