Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Willemt Raft
Commits
a60c2bf6
Commit
a60c2bf6
authored
Apr 30, 2015
by
Alex Fabijanic
Browse files
changes to compile as C++
parent
fbee81c1
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/raft_log.c
View file @
a60c2bf6
...
@@ -45,7 +45,7 @@ static void __ensurecapacity(log_private_t * me)
...
@@ -45,7 +45,7 @@ static void __ensurecapacity(log_private_t * me)
if
(
me
->
count
<
me
->
size
)
if
(
me
->
count
<
me
->
size
)
return
;
return
;
temp
=
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
*
2
);
temp
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
*
2
);
for
(
i
=
0
,
j
=
me
->
front
;
i
<
me
->
count
;
i
++
,
j
++
)
for
(
i
=
0
,
j
=
me
->
front
;
i
<
me
->
count
;
i
++
,
j
++
)
{
{
...
@@ -65,17 +65,17 @@ static void __ensurecapacity(log_private_t * me)
...
@@ -65,17 +65,17 @@ static void __ensurecapacity(log_private_t * me)
log_t
*
log_new
()
log_t
*
log_new
()
{
{
log_private_t
*
me
=
calloc
(
1
,
sizeof
(
log_private_t
));
log_private_t
*
me
=
(
log_private_t
*
)
calloc
(
1
,
sizeof
(
log_private_t
));
me
->
size
=
INITIAL_CAPACITY
;
me
->
size
=
INITIAL_CAPACITY
;
me
->
count
=
0
;
me
->
count
=
0
;
me
->
back
=
in
(
me
)
->
front
=
0
;
me
->
back
=
in
(
me
)
->
front
=
0
;
me
->
entries
=
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
);
me
->
entries
=
(
raft_entry_t
*
)
calloc
(
1
,
sizeof
(
raft_entry_t
)
*
me
->
size
);
return
(
void
*
)
me
;
return
(
log_t
*
)
me
;
}
}
int
log_append_entry
(
log_t
*
me_
,
raft_entry_t
*
c
)
int
log_append_entry
(
log_t
*
me_
,
raft_entry_t
*
c
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
if
(
0
==
c
->
id
)
if
(
0
==
c
->
id
)
return
-
1
;
return
-
1
;
...
@@ -91,7 +91,7 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
...
@@ -91,7 +91,7 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
int
idx
)
raft_entry_t
*
log_get_from_idx
(
log_t
*
me_
,
int
idx
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
int
i
;
int
i
;
if
(
me
->
base_log_idx
+
me
->
count
<
idx
||
idx
<
me
->
base_log_idx
)
if
(
me
->
base_log_idx
+
me
->
count
<
idx
||
idx
<
me
->
base_log_idx
)
...
@@ -110,7 +110,7 @@ int log_count(log_t* me_)
...
@@ -110,7 +110,7 @@ int log_count(log_t* me_)
void
log_delete
(
log_t
*
me_
,
int
idx
)
void
log_delete
(
log_t
*
me_
,
int
idx
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
int
end
;
int
end
;
/* idx starts at 1 */
/* idx starts at 1 */
...
@@ -126,7 +126,7 @@ void log_delete(log_t* me_, int idx)
...
@@ -126,7 +126,7 @@ void log_delete(log_t* me_, int idx)
void
*
log_poll
(
log_t
*
me_
)
void
*
log_poll
(
log_t
*
me_
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
if
(
0
==
log_count
(
me_
))
if
(
0
==
log_count
(
me_
))
return
NULL
;
return
NULL
;
...
@@ -140,7 +140,7 @@ void *log_poll(log_t * me_)
...
@@ -140,7 +140,7 @@ void *log_poll(log_t * me_)
raft_entry_t
*
log_peektail
(
log_t
*
me_
)
raft_entry_t
*
log_peektail
(
log_t
*
me_
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
if
(
0
==
log_count
(
me_
))
if
(
0
==
log_count
(
me_
))
return
NULL
;
return
NULL
;
...
@@ -153,7 +153,7 @@ raft_entry_t *log_peektail(log_t * me_)
...
@@ -153,7 +153,7 @@ raft_entry_t *log_peektail(log_t * me_)
void
log_empty
(
log_t
*
me_
)
void
log_empty
(
log_t
*
me_
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
me
->
front
=
0
;
me
->
front
=
0
;
me
->
back
=
0
;
me
->
back
=
0
;
...
@@ -162,7 +162,7 @@ void log_empty(log_t * me_)
...
@@ -162,7 +162,7 @@ void log_empty(log_t * me_)
void
log_free
(
log_t
*
me_
)
void
log_free
(
log_t
*
me_
)
{
{
log_private_t
*
me
=
(
void
*
)
me_
;
log_private_t
*
me
=
(
log_private_t
*
)
me_
;
free
(
me
->
entries
);
free
(
me
->
entries
);
free
(
me
);
free
(
me
);
...
...
src/raft_node.c
View file @
a60c2bf6
...
@@ -25,9 +25,9 @@ typedef struct
...
@@ -25,9 +25,9 @@ typedef struct
raft_node_t
*
raft_node_new
(
void
*
udata
)
raft_node_t
*
raft_node_new
(
void
*
udata
)
{
{
raft_node_private_t
*
me
;
raft_node_private_t
*
me
;
me
=
calloc
(
1
,
sizeof
(
raft_node_private_t
));
me
=
(
raft_node_private_t
*
)
calloc
(
1
,
sizeof
(
raft_node_private_t
));
me
->
udata
=
udata
;
me
->
udata
=
udata
;
return
(
void
*
)
me
;
return
(
raft_node_t
*
)
me
;
}
}
int
raft_node_is_leader
(
raft_node_t
*
me_
)
int
raft_node_is_leader
(
raft_node_t
*
me_
)
...
@@ -38,18 +38,18 @@ int raft_node_is_leader(raft_node_t* me_)
...
@@ -38,18 +38,18 @@ int raft_node_is_leader(raft_node_t* me_)
int
raft_node_get_next_idx
(
raft_node_t
*
me_
)
int
raft_node_get_next_idx
(
raft_node_t
*
me_
)
{
{
raft_node_private_t
*
me
=
(
void
*
)
me_
;
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
return
me
->
next_idx
;
return
me
->
next_idx
;
}
}
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
int
nextIdx
)
void
raft_node_set_next_idx
(
raft_node_t
*
me_
,
int
nextIdx
)
{
{
raft_node_private_t
*
me
=
(
void
*
)
me_
;
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
me
->
next_idx
=
nextIdx
;
me
->
next_idx
=
nextIdx
;
}
}
void
*
raft_node_get_udata
(
raft_node_t
*
me_
)
void
*
raft_node_get_udata
(
raft_node_t
*
me_
)
{
{
raft_node_private_t
*
me
=
(
void
*
)
me_
;
raft_node_private_t
*
me
=
(
raft_node_private_t
*
)
me_
;
return
me
->
udata
;
return
me
->
udata
;
}
}
src/raft_server.c
View file @
a60c2bf6
...
@@ -30,7 +30,7 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
...
@@ -30,7 +30,7 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
vsprintf
(
buf
,
fmt
,
args
);
vsprintf
(
buf
,
fmt
,
args
);
#if 0 /* debugging */
#if 0 /* debugging */
raft_server_private_t* me = (
void
*)me_;
raft_server_private_t* me = (
raft_server_private_t
*)me_;
printf("%d: %s\n", me->nodeid, buf);
printf("%d: %s\n", me->nodeid, buf);
__FUNC_log(bto, src, buf);
__FUNC_log(bto, src, buf);
#endif
#endif
...
@@ -38,7 +38,7 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
...
@@ -38,7 +38,7 @@ static void __log(raft_server_t *me_, const char *fmt, ...)
raft_server_t
*
raft_new
()
raft_server_t
*
raft_new
()
{
{
raft_server_private_t
*
me
=
calloc
(
1
,
sizeof
(
raft_server_private_t
));
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
calloc
(
1
,
sizeof
(
raft_server_private_t
));
if
(
!
me
)
if
(
!
me
)
return
NULL
;
return
NULL
;
me
->
current_term
=
0
;
me
->
current_term
=
0
;
...
@@ -48,14 +48,14 @@ raft_server_t* raft_new()
...
@@ -48,14 +48,14 @@ raft_server_t* raft_new()
me
->
request_timeout
=
200
;
me
->
request_timeout
=
200
;
me
->
election_timeout
=
1000
;
me
->
election_timeout
=
1000
;
me
->
log
=
log_new
();
me
->
log
=
log_new
();
raft_set_state
((
void
*
)
me
,
RAFT_STATE_FOLLOWER
);
raft_set_state
((
raft_server_t
*
)
me
,
RAFT_STATE_FOLLOWER
);
return
(
void
*
)
me
;
return
(
raft_server_t
*
)
me
;
}
}
void
raft_set_callbacks
(
raft_server_t
*
me_
,
void
raft_set_callbacks
(
raft_server_t
*
me_
,
raft_cbs_t
*
funcs
,
void
*
udata
)
raft_cbs_t
*
funcs
,
void
*
udata
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
memcpy
(
&
me
->
cb
,
funcs
,
sizeof
(
raft_cbs_t
));
memcpy
(
&
me
->
cb
,
funcs
,
sizeof
(
raft_cbs_t
));
me
->
udata
=
udata
;
me
->
udata
=
udata
;
...
@@ -63,7 +63,7 @@ void raft_set_callbacks(raft_server_t* me_,
...
@@ -63,7 +63,7 @@ void raft_set_callbacks(raft_server_t* me_,
void
raft_free
(
raft_server_t
*
me_
)
void
raft_free
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
log_free
(
me
->
log
);
log_free
(
me
->
log
);
free
(
me_
);
free
(
me_
);
...
@@ -71,7 +71,7 @@ void raft_free(raft_server_t* me_)
...
@@ -71,7 +71,7 @@ void raft_free(raft_server_t* me_)
void
raft_election_start
(
raft_server_t
*
me_
)
void
raft_election_start
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"election starting: %d %d, term: %d"
,
__log
(
me_
,
"election starting: %d %d, term: %d"
,
me
->
election_timeout
,
me
->
timeout_elapsed
,
me
->
current_term
);
me
->
election_timeout
,
me
->
timeout_elapsed
,
me
->
current_term
);
...
@@ -81,7 +81,7 @@ void raft_election_start(raft_server_t* me_)
...
@@ -81,7 +81,7 @@ void raft_election_start(raft_server_t* me_)
void
raft_become_leader
(
raft_server_t
*
me_
)
void
raft_become_leader
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
i
;
int
i
;
__log
(
me_
,
"becoming leader"
);
__log
(
me_
,
"becoming leader"
);
...
@@ -101,7 +101,7 @@ void raft_become_leader(raft_server_t* me_)
...
@@ -101,7 +101,7 @@ void raft_become_leader(raft_server_t* me_)
void
raft_become_candidate
(
raft_server_t
*
me_
)
void
raft_become_candidate
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
i
;
int
i
;
__log
(
me_
,
"becoming candidate"
);
__log
(
me_
,
"becoming candidate"
);
...
@@ -122,7 +122,7 @@ void raft_become_candidate(raft_server_t* me_)
...
@@ -122,7 +122,7 @@ void raft_become_candidate(raft_server_t* me_)
void
raft_become_follower
(
raft_server_t
*
me_
)
void
raft_become_follower
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"becoming follower"
);
__log
(
me_
,
"becoming follower"
);
...
@@ -132,7 +132,7 @@ void raft_become_follower(raft_server_t* me_)
...
@@ -132,7 +132,7 @@ void raft_become_follower(raft_server_t* me_)
int
raft_periodic
(
raft_server_t
*
me_
,
int
msec_since_last_period
)
int
raft_periodic
(
raft_server_t
*
me_
,
int
msec_since_last_period
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"periodic elapsed time: %d"
,
me
->
timeout_elapsed
);
__log
(
me_
,
"periodic elapsed time: %d"
,
me
->
timeout_elapsed
);
...
@@ -163,14 +163,14 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
...
@@ -163,14 +163,14 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me_
,
int
etyidx
)
raft_entry_t
*
raft_get_entry_from_idx
(
raft_server_t
*
me_
,
int
etyidx
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_get_from_idx
(
me
->
log
,
etyidx
);
return
log_get_from_idx
(
me
->
log
,
etyidx
);
}
}
int
raft_recv_appendentries_response
(
raft_server_t
*
me_
,
int
raft_recv_appendentries_response
(
raft_server_t
*
me_
,
int
node
,
msg_appendentries_response_t
*
r
)
int
node
,
msg_appendentries_response_t
*
r
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"received appendentries response from: %d"
,
node
);
__log
(
me_
,
"received appendentries response from: %d"
,
node
);
...
@@ -220,7 +220,7 @@ int raft_recv_appendentries(
...
@@ -220,7 +220,7 @@ int raft_recv_appendentries(
msg_appendentries_response_t
*
r
msg_appendentries_response_t
*
r
)
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
timeout_elapsed
=
0
;
me
->
timeout_elapsed
=
0
;
...
@@ -311,11 +311,11 @@ int raft_recv_appendentries(
...
@@ -311,11 +311,11 @@ int raft_recv_appendentries(
msg_entry_t
*
cmd
=
&
ae
->
entries
[
i
];
msg_entry_t
*
cmd
=
&
ae
->
entries
[
i
];
/* TODO: replace malloc with mempoll/arena */
/* TODO: replace malloc with mempoll/arena */
raft_entry_t
*
c
=
malloc
(
sizeof
(
raft_entry_t
));
raft_entry_t
*
c
=
(
raft_entry_t
*
)
malloc
(
sizeof
(
raft_entry_t
));
c
->
term
=
me
->
current_term
;
c
->
term
=
me
->
current_term
;
c
->
len
=
cmd
->
len
;
c
->
len
=
cmd
->
len
;
c
->
id
=
cmd
->
id
;
c
->
id
=
cmd
->
id
;
c
->
data
=
malloc
(
cmd
->
len
);
c
->
data
=
(
unsigned
char
*
)
malloc
(
cmd
->
len
);
memcpy
(
c
->
data
,
cmd
->
data
,
cmd
->
len
);
memcpy
(
c
->
data
,
cmd
->
data
,
cmd
->
len
);
if
(
-
1
==
raft_append_entry
(
me_
,
c
))
if
(
-
1
==
raft_append_entry
(
me_
,
c
))
{
{
...
@@ -334,7 +334,7 @@ int raft_recv_appendentries(
...
@@ -334,7 +334,7 @@ int raft_recv_appendentries(
int
raft_recv_requestvote
(
raft_server_t
*
me_
,
int
node
,
msg_requestvote_t
*
vr
,
int
raft_recv_requestvote
(
raft_server_t
*
me_
,
int
node
,
msg_requestvote_t
*
vr
,
msg_requestvote_response_t
*
r
)
msg_requestvote_response_t
*
r
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
raft_get_current_term
(
me_
)
<
vr
->
term
)
if
(
raft_get_current_term
(
me_
)
<
vr
->
term
)
me
->
voted_for
=
-
1
;
me
->
voted_for
=
-
1
;
...
@@ -369,7 +369,7 @@ int raft_votes_is_majority(const int num_nodes, const int nvotes)
...
@@ -369,7 +369,7 @@ int raft_votes_is_majority(const int num_nodes, const int nvotes)
int
raft_recv_requestvote_response
(
raft_server_t
*
me_
,
int
node
,
int
raft_recv_requestvote_response
(
raft_server_t
*
me_
,
int
node
,
msg_requestvote_response_t
*
r
)
msg_requestvote_response_t
*
r
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"node responded to requestvote: %d status: %s"
,
__log
(
me_
,
"node responded to requestvote: %d status: %s"
,
node
,
r
->
vote_granted
==
1
?
"granted"
:
"not granted"
);
node
,
r
->
vote_granted
==
1
?
"granted"
:
"not granted"
);
...
@@ -396,7 +396,7 @@ int raft_recv_requestvote_response(raft_server_t* me_, int node,
...
@@ -396,7 +396,7 @@ int raft_recv_requestvote_response(raft_server_t* me_, int node,
int
raft_recv_entry
(
raft_server_t
*
me_
,
int
node
,
msg_entry_t
*
e
,
int
raft_recv_entry
(
raft_server_t
*
me_
,
int
node
,
msg_entry_t
*
e
,
msg_entry_response_t
*
r
)
msg_entry_response_t
*
r
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_entry_t
ety
;
raft_entry_t
ety
;
int
res
,
i
;
int
res
,
i
;
...
@@ -418,7 +418,7 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
...
@@ -418,7 +418,7 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e,
int
raft_send_requestvote
(
raft_server_t
*
me_
,
int
node
)
int
raft_send_requestvote
(
raft_server_t
*
me_
,
int
node
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
msg_requestvote_t
rv
;
msg_requestvote_t
rv
;
__log
(
me_
,
"sending requestvote to: %d"
,
node
);
__log
(
me_
,
"sending requestvote to: %d"
,
node
);
...
@@ -432,7 +432,7 @@ int raft_send_requestvote(raft_server_t* me_, int node)
...
@@ -432,7 +432,7 @@ int raft_send_requestvote(raft_server_t* me_, int node)
int
raft_append_entry
(
raft_server_t
*
me_
,
raft_entry_t
*
c
)
int
raft_append_entry
(
raft_server_t
*
me_
,
raft_entry_t
*
c
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
0
==
log_append_entry
(
me
->
log
,
c
))
if
(
0
==
log_append_entry
(
me
->
log
,
c
))
{
{
...
@@ -444,7 +444,7 @@ int raft_append_entry(raft_server_t* me_, raft_entry_t* c)
...
@@ -444,7 +444,7 @@ int raft_append_entry(raft_server_t* me_, raft_entry_t* c)
int
raft_apply_entry
(
raft_server_t
*
me_
)
int
raft_apply_entry
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
raft_entry_t
*
e
;
raft_entry_t
*
e
;
if
(
!
(
e
=
log_get_from_idx
(
me
->
log
,
me
->
last_applied_idx
+
1
)))
if
(
!
(
e
=
log_get_from_idx
(
me
->
log
,
me
->
last_applied_idx
+
1
)))
...
@@ -462,7 +462,7 @@ int raft_apply_entry(raft_server_t* me_)
...
@@ -462,7 +462,7 @@ int raft_apply_entry(raft_server_t* me_)
void
raft_send_appendentries
(
raft_server_t
*
me_
,
int
node
)
void
raft_send_appendentries
(
raft_server_t
*
me_
,
int
node
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
__log
(
me_
,
"sending appendentries to: %d"
,
node
);
__log
(
me_
,
"sending appendentries to: %d"
,
node
);
...
@@ -483,7 +483,7 @@ void raft_send_appendentries(raft_server_t* me_, int node)
...
@@ -483,7 +483,7 @@ void raft_send_appendentries(raft_server_t* me_, int node)
void
raft_send_appendentries_all
(
raft_server_t
*
me_
)
void
raft_send_appendentries_all
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
i
;
int
i
;
for
(
i
=
0
;
i
<
me
->
num_nodes
;
i
++
)
for
(
i
=
0
;
i
<
me
->
num_nodes
;
i
++
)
...
@@ -494,24 +494,24 @@ void raft_send_appendentries_all(raft_server_t* me_)
...
@@ -494,24 +494,24 @@ void raft_send_appendentries_all(raft_server_t* me_)
void
raft_set_configuration
(
raft_server_t
*
me_
,
void
raft_set_configuration
(
raft_server_t
*
me_
,
raft_node_configuration_t
*
nodes
,
int
my_idx
)
raft_node_configuration_t
*
nodes
,
int
my_idx
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
num_nodes
;
int
num_nodes
;
/* TODO: one memory allocation only please */
/* TODO: one memory allocation only please */
for
(
num_nodes
=
0
;
nodes
->
udata_address
;
nodes
++
)
for
(
num_nodes
=
0
;
nodes
->
udata_address
;
nodes
++
)
{
{
num_nodes
++
;
num_nodes
++
;
me
->
nodes
=
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
num_nodes
);
me
->
nodes
=
(
raft_node_t
*
)
realloc
(
me
->
nodes
,
sizeof
(
raft_node_t
*
)
*
num_nodes
);
me
->
num_nodes
=
num_nodes
;
me
->
num_nodes
=
num_nodes
;
me
->
nodes
[
num_nodes
-
1
]
=
raft_node_new
(
nodes
->
udata_address
);
me
->
nodes
[
num_nodes
-
1
]
=
raft_node_new
(
nodes
->
udata_address
);
}
}
me
->
votes_for_me
=
calloc
(
num_nodes
,
sizeof
(
int
));
me
->
votes_for_me
=
(
int
*
)
calloc
(
num_nodes
,
sizeof
(
int
));
me
->
nodeid
=
my_idx
;
me
->
nodeid
=
my_idx
;
}
}
int
raft_get_nvotes_for_me
(
raft_server_t
*
me_
)
int
raft_get_nvotes_for_me
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
int
i
,
votes
;
int
i
,
votes
;
for
(
i
=
0
,
votes
=
0
;
i
<
me
->
num_nodes
;
i
++
)
for
(
i
=
0
,
votes
=
0
;
i
<
me
->
num_nodes
;
i
++
)
...
@@ -527,6 +527,6 @@ int raft_get_nvotes_for_me(raft_server_t* me_)
...
@@ -527,6 +527,6 @@ int raft_get_nvotes_for_me(raft_server_t* me_)
void
raft_vote
(
raft_server_t
*
me_
,
int
node
)
void
raft_vote
(
raft_server_t
*
me_
,
int
node
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
voted_for
=
node
;
me
->
voted_for
=
node
;
}
}
src/raft_server_properties.c
View file @
a60c2bf6
...
@@ -22,13 +22,13 @@
...
@@ -22,13 +22,13 @@
void
raft_set_election_timeout
(
raft_server_t
*
me_
,
int
millisec
)
void
raft_set_election_timeout
(
raft_server_t
*
me_
,
int
millisec
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
election_timeout
=
millisec
;
me
->
election_timeout
=
millisec
;
}
}
void
raft_set_request_timeout
(
raft_server_t
*
me_
,
int
millisec
)
void
raft_set_request_timeout
(
raft_server_t
*
me_
,
int
millisec
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
request_timeout
=
millisec
;
me
->
request_timeout
=
millisec
;
}
}
...
@@ -59,7 +59,7 @@ int raft_get_timeout_elapsed(raft_server_t* me_)
...
@@ -59,7 +59,7 @@ int raft_get_timeout_elapsed(raft_server_t* me_)
int
raft_get_log_count
(
raft_server_t
*
me_
)
int
raft_get_log_count
(
raft_server_t
*
me_
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
return
log_count
(
me
->
log
);
return
log_count
(
me
->
log
);
}
}
...
@@ -70,7 +70,7 @@ int raft_get_voted_for(raft_server_t* me_)
...
@@ -70,7 +70,7 @@ int raft_get_voted_for(raft_server_t* me_)
void
raft_set_current_term
(
raft_server_t
*
me_
,
int
term
)
void
raft_set_current_term
(
raft_server_t
*
me_
,
int
term
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
current_term
=
term
;
me
->
current_term
=
term
;
}
}
...
@@ -81,7 +81,7 @@ int raft_get_current_term(raft_server_t* me_)
...
@@ -81,7 +81,7 @@ int raft_get_current_term(raft_server_t* me_)
void
raft_set_current_idx
(
raft_server_t
*
me_
,
int
idx
)
void
raft_set_current_idx
(
raft_server_t
*
me_
,
int
idx
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
current_idx
=
idx
;
me
->
current_idx
=
idx
;
}
}
...
@@ -97,13 +97,13 @@ int raft_get_my_id(raft_server_t* me_)
...
@@ -97,13 +97,13 @@ int raft_get_my_id(raft_server_t* me_)
void
raft_set_commit_idx
(
raft_server_t
*
me_
,
int
idx
)
void
raft_set_commit_idx
(
raft_server_t
*
me_
,
int
idx
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
commit_idx
=
idx
;
me
->
commit_idx
=
idx
;
}
}
void
raft_set_last_applied_idx
(
raft_server_t
*
me_
,
int
idx
)
void
raft_set_last_applied_idx
(
raft_server_t
*
me_
,
int
idx
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
last_applied_idx
=
idx
;
me
->
last_applied_idx
=
idx
;
}
}
...
@@ -119,7 +119,7 @@ int raft_get_commit_idx(raft_server_t* me_)
...
@@ -119,7 +119,7 @@ int raft_get_commit_idx(raft_server_t* me_)
void
raft_set_state
(
raft_server_t
*
me_
,
int
state
)
void
raft_set_state
(
raft_server_t
*
me_
,
int
state
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
me
->
state
=
state
;
me
->
state
=
state
;
}
}
...
@@ -130,11 +130,11 @@ int raft_get_state(raft_server_t* me_)
...
@@ -130,11 +130,11 @@ int raft_get_state(raft_server_t* me_)
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
int
nodeid
)
raft_node_t
*
raft_get_node
(
raft_server_t
*
me_
,
int
nodeid
)
{
{
raft_server_private_t
*
me
=
(
void
*
)
me_
;
raft_server_private_t
*
me
=
(
raft_server_private_t
*
)
me_
;
if
(
nodeid
<
0
||
me
->
num_nodes
<=
nodeid
)
if
(
nodeid
<
0
||
me
->
num_nodes
<=
nodeid
)
return
NULL
;
return
NULL
;
return
me
->
nodes
[
nodeid
];
return
(
raft_node_t
*
)
me
->
nodes
[
nodeid
];
}
}
int
raft_is_follower
(
raft_server_t
*
me_
)
int
raft_is_follower
(
raft_server_t
*
me_
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment