Compare commits

...

3 Commits

Author SHA1 Message Date
YuQing e9e33883bf Merge branch 'master' of gitee.com:fastdfs100/libserverframe 2025-02-09 09:30:42 +08:00
YuQing 318640572f sf_file_writer.[hc]: support write done callback 2025-02-09 09:26:34 +08:00
YuQing f6e2de5668 upgrade version to 1.2.6 2025-01-27 20:50:18 +08:00
4 changed files with 32 additions and 4 deletions

View File

@ -2,8 +2,8 @@
%define CommitVersion %(echo $COMMIT_VERSION)
Name: libserverframe
Version: 1.2.5
Release: 1%{?dist}
Version: 1.2.6
Release: 3%{?dist}
Summary: network framework library
License: AGPL v3.0
Group: Arch/Tech
@ -12,9 +12,9 @@ Source: http://github.com/happyfish100/libserverframe/%{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: libfastcommon-devel >= 1.0.75
BuildRequires: libfastcommon-devel >= 1.0.76
Requires: %__cp %__mv %__chmod %__grep %__mkdir %__install %__id
Requires: libfastcommon >= 1.0.75
Requires: libfastcommon >= 1.0.76
%description
common framework library

View File

@ -247,6 +247,9 @@ int sf_binlog_writer_notify_exit(SFBinlogWriterInfo *writer);
#define sf_binlog_writer_set_flags(writer, flags) \
sf_file_writer_set_flags(&(writer)->fw, flags)
#define sf_binlog_writer_set_write_done_callback(writer, callback, args) \
sf_file_writer_set_write_done_callback(&(writer)->fw, callback, args)
#define sf_binlog_writer_get_last_version_ex(writer, log_level) \
sf_file_writer_get_last_version_ex(&(writer)->fw, log_level)

View File

@ -244,6 +244,11 @@ static int do_write_to_file(SFFileWriterInfo *writer,
}
writer->file.size += len;
if (writer->write_done_callback.func != NULL) {
writer->write_done_callback.func(writer,
writer->write_done_callback.args);
}
return 0;
}
@ -422,6 +427,7 @@ int sf_file_writer_init(SFFileWriterInfo *writer, const char *data_path,
writer->last_versions.pending = 0;
writer->last_versions.done = 0;
writer->flags = 0;
sf_file_writer_set_write_done_callback(writer, NULL, NULL);
if ((result=sf_binlog_buffer_init(&writer->
binlog_buffer, buffer_size)) != 0)
{

View File

@ -30,6 +30,11 @@
#define SF_BINLOG_FILE_PREFIX "binlog"
#define SF_BINLOG_FILE_EXT_FMT ".%06d"
struct sf_file_writer_info;
typedef void (*sf_file_write_done_callback)(
struct sf_file_writer_info *writer, void *args);
typedef struct sf_file_writer_info {
struct {
const char *data_path;
@ -60,6 +65,12 @@ typedef struct sf_file_writer_info {
int64_t pending;
volatile int64_t done;
} last_versions;
struct {
sf_file_write_done_callback func;
void *args;
} write_done_callback;
} SFFileWriterInfo;
#ifdef __cplusplus
@ -103,6 +114,14 @@ static inline void sf_file_writer_set_call_fsync(
writer->cfg.call_fsync = call_fsync;
}
static inline void sf_file_writer_set_write_done_callback (
SFFileWriterInfo *writer, sf_file_write_done_callback callback,
void *args)
{
writer->write_done_callback.func = callback;
writer->write_done_callback.args = args;
}
static inline int64_t sf_file_writer_get_last_version_ex(
SFFileWriterInfo *writer, const int log_level)
{