Change: remove N, LS, SM
from Raft<C, N, LS, SM>
#941
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changelog
Change: remove
N, LS, SM
fromRaft<C, N, LS, SM>
Raft<C, ..>
: is a control handle ofRaftCore
and it does not directlyrely on
N: RaftNetworkFactory
,LS: RaftLogStorage
andSM: RaftStateMachine
.Thus these types should not be part of
Raft
.In this commit, we remove
N, LS, SM
fromRaft<C, N, LS, SM>
,RaftInner<C, N, LS>
andRaftMsg<C, N, LS>
.Type
N, LS, SM
now are only used byRaft::new()
which needs thesetypes to create
RaftCore
.Raft::external_request()
: Another change is the signature of theFn
passed toRaft::external_request()
changes fromFnOnce(&RaftState, &mut LS, &mut N)
toFnOnce(&RaftState)
.Fix: the
FnOnce
passed toRaft::external_request()
should alwaysbe
Send
, unoptionally. Because it is used to send fromRaft
toRaftCore
.Fix: RaftMsg::ExternalRequest: should not rely on RaftLogStorage and RaftNetworkFactory #939
This change is