Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Willemt Raft
Commits
9f7fa0a0
Commit
9f7fa0a0
authored
Nov 18, 2015
by
Willem Thiart
Browse files
Add raft_get_last_log_term
parent
661032df
Changes
3
Hide whitespace changes
Inline
Side-by-side
include/raft.h
View file @
9f7fa0a0
...
@@ -553,4 +553,8 @@ int raft_msg_entry_response_committed(raft_server_t* me_,
...
@@ -553,4 +553,8 @@ int raft_msg_entry_response_committed(raft_server_t* me_,
* @return get state of type raft_state_e. */
* @return get state of type raft_state_e. */
int
raft_get_state
(
raft_server_t
*
me_
);
int
raft_get_state
(
raft_server_t
*
me_
);
/** The the most recent log's term
* @return the last log term */
int
raft_get_last_log_term
(
raft_server_t
*
me_
);
#endif
/* RAFT_H_ */
#endif
/* RAFT_H_ */
src/raft_server.c
View file @
9f7fa0a0
...
@@ -500,12 +500,7 @@ int raft_send_requestvote(raft_server_t* me_, int node)
...
@@ -500,12 +500,7 @@ int raft_send_requestvote(raft_server_t* me_, int node)
rv
.
term
=
me
->
current_term
;
rv
.
term
=
me
->
current_term
;
rv
.
last_log_idx
=
raft_get_current_idx
(
me_
);
rv
.
last_log_idx
=
raft_get_current_idx
(
me_
);
if
(
0
<
rv
.
last_log_idx
)
rv
.
last_log_term
=
raft_get_last_log_term
(
me_
);
{
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
rv
.
last_log_idx
);
if
(
ety
)
rv
.
last_log_term
=
ety
->
term
;
}
rv
.
candidate_id
=
raft_get_nodeid
(
me_
);
rv
.
candidate_id
=
raft_get_nodeid
(
me_
);
if
(
me
->
cb
.
send_requestvote
)
if
(
me
->
cb
.
send_requestvote
)
me
->
cb
.
send_requestvote
(
me_
,
me
->
udata
,
node
,
&
rv
);
me
->
cb
.
send_requestvote
(
me_
,
me
->
udata
,
node
,
&
rv
);
...
...
src/raft_server_properties.c
View file @
9f7fa0a0
...
@@ -161,3 +161,15 @@ int raft_is_candidate(raft_server_t* me_)
...
@@ -161,3 +161,15 @@ int raft_is_candidate(raft_server_t* me_)
{
{
return
raft_get_state
(
me_
)
==
RAFT_STATE_CANDIDATE
;
return
raft_get_state
(
me_
)
==
RAFT_STATE_CANDIDATE
;
}
}
int
raft_get_last_log_term
(
raft_server_t
*
me_
)
{
int
current_idx
=
raft_get_current_idx
(
me_
);
if
(
0
<
current_idx
)
{
raft_entry_t
*
ety
=
raft_get_entry_from_idx
(
me_
,
current_idx
);
if
(
ety
)
return
ety
->
term
;
}
return
0
;
}
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