Skip to content

Commit

Permalink
Add KV store FSM
Browse files Browse the repository at this point in the history
  • Loading branch information
willemt committed Jun 3, 2017
1 parent 391ca6b commit 837d958
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
9 changes: 9 additions & 0 deletions include/fsm.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,19 @@ typedef struct {
int value;
} fsm_simple_cmd_t;

typedef fsm_simple_t fsm_kvstore_t;
typedef fsm_simple_cmd_t fsm_kvstore_cmd_t;

fsm_simple_t* fsm_simple_new(int size);

void fsm_simple_push(fsm_simple_t* me, fsm_simple_cmd_t* cmd);

void fsm_simple_rand_cmd(fsm_simple_t* me, fsm_simple_cmd_t* cmd);

fsm_kvstore_t* fsm_kvstore_new(int size);

void fsm_kvstore_push(fsm_kvstore_t* me, fsm_kvstore_cmd_t* cmd);

void fsm_kvstore_rand_cmd(fsm_kvstore_t* me, fsm_kvstore_cmd_t* cmd);

#endif /* STATE_MACHINE_H */
18 changes: 9 additions & 9 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ static int __raft_applylog(
default:
{
server_t* sv = __get_server_from_nodeid(sys, raft_get_nodeid(raft));
fsm_simple_push(sv->fsm, ety->data.buf);
fsm_kvstore_push(sv->fsm, ety->data.buf);
}
break;
}
Expand Down Expand Up @@ -588,7 +588,7 @@ static void __recycle_node(server_t* node)
static void __create_node(server_t* sv, int id, system_t* sys)
{
sv->raft = raft_new();
sv->fsm = fsm_simple_new(FSM_SIZE);
sv->fsm = fsm_kvstore_new(FSM_SIZE);
raft_set_callbacks(sv->raft, &raft_funcs, sys);
raft_set_election_timeout(sv->raft, 500);
sv->inbox = llqueue_new();
Expand Down Expand Up @@ -720,9 +720,9 @@ static void __push_entry(system_t* sys)
{
int i;

fsm_simple_cmd_t cmd;
fsm_simple_rand_cmd(sys->fsm, &cmd);
fsm_simple_push(sys->fsm, &cmd);
fsm_kvstore_cmd_t cmd;
fsm_kvstore_rand_cmd(sys->fsm, &cmd);
fsm_kvstore_push(sys->fsm, &cmd);

for (i = 0; i < sys->n_servers; i++)
{
Expand All @@ -732,9 +732,9 @@ static void __push_entry(system_t* sys)

raft_entry_t* ety = calloc(1, sizeof(raft_entry_t));
ety->id = sys->n_entries++;
ety->data.buf = malloc(sizeof(fsm_simple_cmd_t));
memcpy(ety->data.buf, &cmd, sizeof(fsm_simple_cmd_t));
ety->data.len = sizeof(fsm_simple_cmd_t);
ety->data.buf = malloc(sizeof(fsm_kvstore_cmd_t));
memcpy(ety->data.buf, &cmd, sizeof(fsm_kvstore_cmd_t));
ety->data.len = sizeof(fsm_kvstore_cmd_t);
msg_entry_response_t response;
raft_recv_entry(r, ety, &response);
}
Expand Down Expand Up @@ -900,7 +900,7 @@ int main(int argc, char **argv)
srand(atoi(opts.seed));

sys.commits = farraylist_new();
sys.fsm = fsm_simple_new(FSM_SIZE);
sys.fsm = fsm_kvstore_new(FSM_SIZE);

sys.n_servers = atoi(opts.servers);
sys.servers = calloc(sys.n_servers, sizeof(*sys.servers));
Expand Down
1 change: 1 addition & 0 deletions wscript
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def build(bld):
source="""
src/main.c
src/fsm_simple.c
src/fsm_kvstore.c
""".split() + bld.clib_c_files(clibs),
includes=['./include'] + includes + bld.clib_h_paths(clibs),
target='virtraft',
Expand Down

0 comments on commit 837d958

Please sign in to comment.