raftServer.h 1.5 KB
Newer Older
M
Minghao Li 已提交
1 2 3 4 5 6 7
#ifndef TDENGINE_RAFT_SERVER_H
#define TDENGINE_RAFT_SERVER_H

#ifdef __cplusplus
extern "C" {
#endif

M
Minghao Li 已提交
8 9 10 11
#include <netinet/in.h>
#include <arpa/inet.h>
#include <assert.h>
#include <string.h>
M
Minghao Li 已提交
12 13
#include "raft.h"
#include "raft/uv.h"
14 15 16 17 18 19 20 21 22 23 24 25 26 27
#include "common.h"


// simulate a db store, just for test
#define MAX_KV_LEN 100
#define MAX_RECORD_COUNT 500
char *keys;
char *values;
int writeIndex;

void initStore();
void destroyStore();
void putKV(const char *key, const char *value);
char *getKV(const char *key);
M
Minghao Li 已提交
28 29

typedef struct {
30
	char dir[DIR_LEN + HOST_LEN * 2];  /* Data dir of UV I/O backend */
M
Minghao Li 已提交
31 32
	char host[HOST_LEN];
    uint32_t port;
M
Minghao Li 已提交
33 34 35 36 37 38 39 40 41 42
	char address[ADDRESS_LEN];         /* Raft instance address */
	raft_id raftId;                    /* For vote */
	struct raft_fsm *fsm;              /* Sample application FSM */

	struct raft raft;                   /* Raft instance */
	struct raft_io io;                  /* UV I/O backend */
	struct uv_loop_s loop;              /* UV loop */
	struct raft_uv_transport transport; /* UV I/O backend transport */
} SRaftServer;

43 44 45 46 47
#define MAX_TOKEN_LEN 32
int splitString(const char* str, char* separator, char (*arr)[MAX_TOKEN_LEN], int n_arr);

uint64_t raftId(const char *host, uint32_t port);
int32_t raftServerInit(SRaftServer *pRaftServer, const SRaftServerConfig *pConf, struct raft_fsm *pFsm);
M
Minghao Li 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61
int32_t raftServerStart(SRaftServer *pRaftServer);
void raftServerClose(SRaftServer *pRaftServer);


int initFsm(struct raft_fsm *fsm);




#ifdef __cplusplus
}
#endif

#endif // TDENGINE_RAFT_SERVER_H