TDengine/source/libs/sync/inc/syncIO.h

84 lines
2.4 KiB
C
Raw Normal View History

2022-02-26 18:24:50 +00:00
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_LIBS_IO_H
#define _TD_LIBS_IO_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include "os.h"
#include "syncInt.h"
#include "taosdef.h"
#include "tqueue.h"
#include "trpc.h"
2022-03-12 09:02:15 +00:00
#define TICK_Q_TIMER_MS 1000
#define TICK_Ping_TIMER_MS 1000
2022-02-26 18:24:50 +00:00
typedef struct SSyncIO {
STaosQueue *pMsgQ;
2022-03-16 07:09:56 +00:00
STaosQset * pQset;
2022-03-21 12:06:57 +00:00
TdThread consumerTid;
void * serverRpc;
void * clientRpc;
2022-05-19 11:44:01 +00:00
SEpSet myAddr;
SMsgCb msgcb;
2022-02-26 18:24:50 +00:00
2022-03-12 09:02:15 +00:00
tmr_h qTimer;
int32_t qTimerMS;
tmr_h pingTimer;
int32_t pingTimerMS;
tmr_h timerMgr;
2022-02-26 18:24:50 +00:00
2022-02-27 02:22:15 +00:00
void *pSyncNode;
2022-03-02 07:11:54 +00:00
int32_t (*FpOnSyncPing)(SSyncNode *pSyncNode, SyncPing *pMsg);
int32_t (*FpOnSyncPingReply)(SSyncNode *pSyncNode, SyncPingReply *pMsg);
2022-06-25 17:16:11 +00:00
int32_t (*FpOnSyncClientRequest)(SSyncNode *pSyncNode, SyncClientRequest *pMsg, SyncIndex *pRetIndex);
2022-03-02 07:11:54 +00:00
int32_t (*FpOnSyncRequestVote)(SSyncNode *pSyncNode, SyncRequestVote *pMsg);
int32_t (*FpOnSyncRequestVoteReply)(SSyncNode *pSyncNode, SyncRequestVoteReply *pMsg);
int32_t (*FpOnSyncAppendEntries)(SSyncNode *pSyncNode, SyncAppendEntries *pMsg);
int32_t (*FpOnSyncAppendEntriesReply)(SSyncNode *pSyncNode, SyncAppendEntriesReply *pMsg);
2022-03-04 08:54:25 +00:00
int32_t (*FpOnSyncTimeout)(SSyncNode *pSyncNode, SyncTimeout *pMsg);
2022-03-02 07:11:54 +00:00
2022-06-01 07:03:01 +00:00
int32_t (*FpOnSyncSnapshotSend)(SSyncNode *pSyncNode, SyncSnapshotSend *pMsg);
int32_t (*FpOnSyncSnapshotRsp)(SSyncNode *pSyncNode, SyncSnapshotRsp *pMsg);
2022-03-02 07:11:54 +00:00
int8_t isStart;
2022-02-27 02:22:15 +00:00
2022-02-26 18:24:50 +00:00
} SSyncIO;
2022-02-27 02:22:15 +00:00
extern SSyncIO *gSyncIO;
2022-02-26 18:24:50 +00:00
2022-03-02 07:11:54 +00:00
int32_t syncIOStart(char *host, uint16_t port);
2022-02-28 08:36:57 +00:00
int32_t syncIOStop();
2022-05-19 11:44:01 +00:00
int32_t syncIOSendMsg(const SEpSet *pEpSet, SRpcMsg *pMsg);
int32_t syncIOEqMsg(const SMsgCb *msgcb, SRpcMsg *pMsg);
2022-02-26 18:24:50 +00:00
2022-03-12 09:02:15 +00:00
int32_t syncIOQTimerStart();
int32_t syncIOQTimerStop();
int32_t syncIOPingTimerStart();
int32_t syncIOPingTimerStop();
2022-02-26 18:24:50 +00:00
#ifdef __cplusplus
}
#endif
#endif /*_TD_LIBS_IO_H*/