diff --git a/src/sf_binlog_writer.c b/src/sf_binlog_writer.c index cb65528..d7b6b38 100644 --- a/src/sf_binlog_writer.c +++ b/src/sf_binlog_writer.c @@ -205,6 +205,13 @@ static int deal_binlog_records(SFBinlogWriterThread *thread, return result; } break; + case SF_BINLOG_BUFFER_TYPE_SET_WRITE_INDEX: + if ((result=sf_file_writer_set_binlog_last_index(¤t-> + writer->fw, current->version.first)) != 0) + { + return result; + } + break; case SF_BINLOG_BUFFER_TYPE_NOTIFY_EXIT: flush_writer_files(thread); return ERRNO_THREAD_EXIT; @@ -525,6 +532,13 @@ int sf_binlog_writer_change_next_version(SFBinlogWriterInfo *writer, next_version); } +int sf_binlog_writer_change_write_index(SFBinlogWriterInfo *writer, + const int write_index) +{ + return sf_binlog_writer_push_directive(writer, + SF_BINLOG_BUFFER_TYPE_SET_WRITE_INDEX, write_index); +} + int sf_binlog_writer_rotate_file(SFBinlogWriterInfo *writer) { return sf_binlog_writer_push_directive(writer, diff --git a/src/sf_binlog_writer.h b/src/sf_binlog_writer.h index a83e143..04fdde0 100644 --- a/src/sf_binlog_writer.h +++ b/src/sf_binlog_writer.h @@ -31,8 +31,9 @@ #define SF_BINLOG_BUFFER_TYPE_WRITE_TO_FILE 0 //default type, must be 0 #define SF_BINLOG_BUFFER_TYPE_SET_NEXT_VERSION 1 #define SF_BINLOG_BUFFER_TYPE_CHANGE_ORDER_TYPE 2 -#define SF_BINLOG_BUFFER_TYPE_ROTATE_FILE 3 -#define SF_BINLOG_BUFFER_TYPE_NOTIFY_EXIT 4 +#define SF_BINLOG_BUFFER_TYPE_SET_WRITE_INDEX 3 +#define SF_BINLOG_BUFFER_TYPE_ROTATE_FILE 4 +#define SF_BINLOG_BUFFER_TYPE_NOTIFY_EXIT 5 #define SF_BINLOG_BUFFER_SET_VERSION(buffer, ver) \ (buffer)->version.first = (buffer)->version.last = ver @@ -167,6 +168,9 @@ int sf_binlog_writer_change_next_version(SFBinlogWriterInfo *writer, int sf_binlog_writer_rotate_file(SFBinlogWriterInfo *writer); +int sf_binlog_writer_change_write_index(SFBinlogWriterInfo *writer, + const int write_index); + int sf_binlog_writer_notify_exit(SFBinlogWriterInfo *writer); #define sf_binlog_writer_set_flags(writer, flags) \