From 83a40a7f5abe01f5d83211199b87954fc68ef642 Mon Sep 17 00:00:00 2001 From: lichuang Date: Mon, 15 Nov 2021 11:11:06 +0800 Subject: [PATCH] [TD-10645][raft]refactor sync interface --- include/libs/sync/sync.h | 29 ++++++++--------------------- source/libs/sync/inc/sync_type.h | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/include/libs/sync/sync.h b/include/libs/sync/sync.h index fc48d260f5..6a9772bcc4 100644 --- a/include/libs/sync/sync.h +++ b/include/libs/sync/sync.h @@ -109,33 +109,20 @@ typedef struct SSyncLogStore { SyncIndex (*logLastIndex)(struct SSyncLogStore* logStore); } SSyncLogStore; -typedef struct SSyncServerState { - SyncNodeId voteFor; - SyncTerm term; - SyncIndex commitIndex; -} SSyncServerState; - -typedef struct SSyncClusterConfig { - // Log index number of current cluster config. - SyncIndex index; - - // Log index number of previous cluster config. - SyncIndex prevIndex; - - // current cluster - const SSyncCluster* cluster; -} SSyncClusterConfig; - typedef struct SStateManager { void* pData; - int32_t (*saveServerState)(struct SStateManager* stateMng, SSyncServerState* state); + // save serialized server state data, buffer will be free by Sync + int32_t (*saveServerState)(struct SStateManager* stateMng, const char* buffer, int n); - int32_t (*readServerState)(struct SStateManager* stateMng, SSyncServerState* state); + // read serialized server state data, buffer will be free by Sync + int32_t (*readServerState)(struct SStateManager* stateMng, char** ppBuffer, int* n); - void (*saveCluster)(struct SStateManager* stateMng, const SSyncClusterConfig* cluster); + // save serialized cluster state data, buffer will be free by Sync + void (*saveCluster)(struct SStateManager* stateMng, const char* buffer, int n); - const SSyncClusterConfig* (*readCluster)(struct SStateManager* stateMng); + // read serialized cluster state data, buffer will be free by Sync + int32_t (*readCluster)(struct SStateManager* stateMng, char** ppBuffer, int* n); } SStateManager; typedef struct { diff --git a/source/libs/sync/inc/sync_type.h b/source/libs/sync/inc/sync_type.h index a7977f318e..34be10dfd5 100644 --- a/source/libs/sync/inc/sync_type.h +++ b/source/libs/sync/inc/sync_type.h @@ -50,6 +50,24 @@ typedef struct SSyncRaftEntry SSyncRaftEntry; #endif #endif + +typedef struct SSyncServerState { + SyncNodeId voteFor; + SyncTerm term; + SyncIndex commitIndex; +} SSyncServerState; + +typedef struct SSyncClusterConfig { + // Log index number of current cluster config. + SyncIndex index; + + // Log index number of previous cluster config. + SyncIndex prevIndex; + + // current cluster + const SSyncCluster* cluster; +} SSyncClusterConfig; + typedef struct { int32_t replica; SyncNodeId nodeId[TSDB_MAX_REPLICA]; -- GitLab