add raftServer code
This commit is contained in:
parent
489c2ca9d5
commit
82f8987534
|
@ -0,0 +1,107 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <raft.h>
|
||||||
|
#include <raft/uv.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
#include "raftServer.h"
|
||||||
|
|
||||||
|
#define COMMAND_LEN 128
|
||||||
|
|
||||||
|
const char *exe_name;
|
||||||
|
|
||||||
|
void *startServerFunc(void *param) {
|
||||||
|
SRaftServer *pServer = (SRaftServer*)param;
|
||||||
|
int32_t r = raftServerStart(pServer);
|
||||||
|
assert(r == 0);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Console ---------------------------------
|
||||||
|
void console(SRaftServer *pRaftServer) {
|
||||||
|
while (1) {
|
||||||
|
char cmd_buf[COMMAND_LEN];
|
||||||
|
memset(cmd_buf, 0, sizeof(cmd_buf));
|
||||||
|
char *ret = fgets(cmd_buf, COMMAND_LEN, stdin);
|
||||||
|
if (!ret) {
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pos = strlen(cmd_buf);
|
||||||
|
if(cmd_buf[pos - 1] == '\n') {
|
||||||
|
cmd_buf[pos - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strncmp(cmd_buf, "", COMMAND_LEN) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("cmd_buf: [%s] \n", cmd_buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void *startConsoleFunc(void *param) {
|
||||||
|
SRaftServer *pServer = (SRaftServer*)param;
|
||||||
|
console(pServer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Config ---------------------------------
|
||||||
|
#define DIR_LEN 128
|
||||||
|
#define HOST_LEN 128
|
||||||
|
typedef struct SRaftServerConfig {
|
||||||
|
char host[HOST_LEN];
|
||||||
|
uint32_t port;
|
||||||
|
char dir[DIR_LEN];
|
||||||
|
} SRaftServerConfig;
|
||||||
|
|
||||||
|
void parseConf(int argc, char **argv, SRaftServerConfig *pConf) {
|
||||||
|
snprintf(pConf->dir, sizeof(pConf->dir), "%s", argv[1]);
|
||||||
|
sscanf(argv[2], "%u", &pConf->port);
|
||||||
|
snprintf(pConf->dir, sizeof(pConf->dir), "%s", argv[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------
|
||||||
|
void usage() {
|
||||||
|
printf("\n");
|
||||||
|
printf("usage: %s host port dir \n", exe_name);
|
||||||
|
printf("eg : %s 127.0.0.1 10000 ./data \n", exe_name);
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
srand(time(NULL));
|
||||||
|
int32_t ret;
|
||||||
|
|
||||||
|
exe_name = argv[0];
|
||||||
|
if (argc != 4) {
|
||||||
|
usage();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
SRaftServerConfig conf;
|
||||||
|
parseConf(argc, argv, &conf);
|
||||||
|
|
||||||
|
struct raft_fsm fsm;
|
||||||
|
initFsm(&fsm);
|
||||||
|
|
||||||
|
SRaftServer raftServer;
|
||||||
|
ret = raftServerInit(&raftServer, &conf, &fsm);
|
||||||
|
|
||||||
|
pthread_t tidRaftServer;
|
||||||
|
pthread_create(&tidRaftServer, NULL, startServerFunc, &raftServer);
|
||||||
|
|
||||||
|
pthread_t tidConsole;
|
||||||
|
pthread_create(&tidConsole, NULL, startConsoleFunc, &raftServer);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
sleep(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "raftServer.h"
|
||||||
|
|
||||||
|
int32_t raftServerInit(SRaftServer *pRaftServer, struct SRaftServerConfig *pConf, struct raft_fsm *pFsm) {
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t raftServerStart(SRaftServer *pRaftServer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void raftServerClose(SRaftServer *pRaftServer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t initFsm(struct raft_fsm *fsm) {
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
#ifndef TDENGINE_RAFT_SERVER_H
|
||||||
|
#define TDENGINE_RAFT_SERVER_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "raft.h"
|
||||||
|
#include "raft/uv.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define DIR_LEN 128
|
||||||
|
#define ADDRESS_LEN 128
|
||||||
|
typedef struct {
|
||||||
|
char dir[DIR_LEN]; /* Data dir of UV I/O backend */
|
||||||
|
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;
|
||||||
|
|
||||||
|
struct SRaftServerConfig;
|
||||||
|
int32_t raftServerInit(SRaftServer *pRaftServer, struct SRaftServerConfig *pConf, struct raft_fsm *pFsm);
|
||||||
|
int32_t raftServerStart(SRaftServer *pRaftServer);
|
||||||
|
void raftServerClose(SRaftServer *pRaftServer);
|
||||||
|
|
||||||
|
|
||||||
|
int initFsm(struct raft_fsm *fsm);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // TDENGINE_RAFT_SERVER_H
|
Loading…
Reference in New Issue