Commit de5373a9 authored by willem's avatar willem
Browse files

Changed callback struct

parent 9f2fb73a
...@@ -88,7 +88,7 @@ typedef struct { ...@@ -88,7 +88,7 @@ typedef struct {
int request_timeout; int request_timeout;
/* callbacks */ /* callbacks */
raft_external_functions_t *cb; raft_external_functions_t cb;
void* cb_ctx; void* cb_ctx;
union { union {
...@@ -276,11 +276,13 @@ int raft_get_commit_idx(raft_server_t* me_) ...@@ -276,11 +276,13 @@ int raft_get_commit_idx(raft_server_t* me_)
return ((raft_server_private_t*)me_)->commit_idx; return ((raft_server_private_t*)me_)->commit_idx;
} }
void raft_set_callbacks(raft_server_t* me_, raft_external_functions_t* funcs, void* cb_ctx) void raft_set_callbacks(raft_server_t* me_,
raft_external_functions_t* funcs, void* cb_ctx)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
memcpy(&me->cb, funcs, sizeof(raft_external_functions_t));
me->cb_ctx = cb_ctx; me->cb_ctx = cb_ctx;
me->cb = funcs;
} }
void raft_election_start(raft_server_t* me_) void raft_election_start(raft_server_t* me_)
...@@ -327,8 +329,8 @@ void raft_become_candidate(raft_server_t* me_) ...@@ -327,8 +329,8 @@ void raft_become_candidate(raft_server_t* me_)
rv.term = me->current_term; rv.term = me->current_term;
rv.candidate_id = 0;//me->current_term; rv.candidate_id = 0;//me->current_term;
// rv.last_log_idx = me->log // rv.last_log_idx = me->log
if (me->cb && me->cb->send) if (me->cb.send)
me->cb->send(me->cb_ctx,NULL, i, (void*)&rv, sizeof(msg_requestvote_t)); me->cb.send(me->cb_ctx,NULL, i, (void*)&rv, sizeof(msg_requestvote_t));
} }
} }
...@@ -532,8 +534,8 @@ int raft_recv_appendentries( ...@@ -532,8 +534,8 @@ int raft_recv_appendentries(
r.first_idx = ae->prev_log_idx + 1; r.first_idx = ae->prev_log_idx + 1;
done: done:
if (me->cb && me->cb->send) if (me->cb.send)
me->cb->send(me->cb_ctx, NULL, peer, (void*)&r, me->cb.send(me->cb_ctx, NULL, peer, (void*)&r,
sizeof(msg_appendentries_response_t)); sizeof(msg_appendentries_response_t));
return 1; return 1;
} }
...@@ -559,8 +561,8 @@ int raft_recv_requestvote(raft_server_t* me_, int peer, msg_requestvote_t* vr) ...@@ -559,8 +561,8 @@ int raft_recv_requestvote(raft_server_t* me_, int peer, msg_requestvote_t* vr)
} }
r.term = raft_get_current_term(me_); r.term = raft_get_current_term(me_);
if (me->cb && me->cb->send) if (me->cb.send)
me->cb->send(me->cb_ctx, NULL, peer, (void*)&r, me->cb.send(me->cb_ctx, NULL, peer, (void*)&r,
sizeof(msg_requestvote_response_t)); sizeof(msg_requestvote_response_t));
return 0; return 0;
...@@ -608,8 +610,8 @@ int raft_send_entry_response(raft_server_t* me_, ...@@ -608,8 +610,8 @@ int raft_send_entry_response(raft_server_t* me_,
res.id = etyid; res.id = etyid;
res.was_committed = was_committed; res.was_committed = was_committed;
if (me->cb && me->cb->send) if (me->cb.send)
me->cb->send(me->cb_ctx, NULL, peerid, me->cb.send(me->cb_ctx, NULL, peerid,
(void*)&res, sizeof(msg_entry_response_t)); (void*)&res, sizeof(msg_entry_response_t));
return 0; return 0;
} }
...@@ -644,8 +646,8 @@ int raft_send_requestvote(raft_server_t* me_, int peer) ...@@ -644,8 +646,8 @@ int raft_send_requestvote(raft_server_t* me_, int peer)
rv.term = raft_get_current_term(me_); rv.term = raft_get_current_term(me_);
rv.last_log_idx = raft_get_current_idx(me_); rv.last_log_idx = raft_get_current_idx(me_);
if (me->cb && me->cb->send) if (me->cb.send)
me->cb->send(me->cb_ctx,NULL, peer, (void*)&rv, sizeof(msg_requestvote_t)); me->cb.send(me->cb_ctx,NULL, peer, (void*)&rv, sizeof(msg_requestvote_t));
return 1; return 1;
} }
...@@ -688,7 +690,7 @@ void raft_send_appendentries(raft_server_t* me_, int peer) ...@@ -688,7 +690,7 @@ void raft_send_appendentries(raft_server_t* me_, int peer)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
if (!(me->cb && me->cb->send)) if (!(me->cb.send))
return; return;
msg_appendentries_t ae; msg_appendentries_t ae;
...@@ -698,7 +700,7 @@ void raft_send_appendentries(raft_server_t* me_, int peer) ...@@ -698,7 +700,7 @@ void raft_send_appendentries(raft_server_t* me_, int peer)
ae.leader_id = raft_get_my_id(me_); ae.leader_id = raft_get_my_id(me_);
ae.prev_log_term = raft_peer_get_next_idx(p); ae.prev_log_term = raft_peer_get_next_idx(p);
// ae.prev_log_idx = // ae.prev_log_idx =
me->cb->send(me->cb_ctx, NULL, peer, me->cb.send(me->cb_ctx, NULL, peer,
(void*)&ae, sizeof(msg_appendentries_t)); (void*)&ae, sizeof(msg_appendentries_t));
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment