Skip to content

Rewrite the Transport component of raft #180

Description

@sjcsjc123

wo should use grpc.

// transport implements raft.Transport interface// we can use it to send rpc to other raft nodes// and receive rpc from other raft nodestypetransportstruct {
//implement melocalAddr raft.ServerAddressconsumerchan raft.RPCclientsmap[raft.ServerAddress]*grpc.ClientConnserver*grpc.Server
}
// NewTransport returns a new transport, it needs start a grpc serverfuncnewTransport() raft.Transport {
return&transport{}
}
func (t*transport) AppendEntriesPipeline(id raft.ServerID, target raft.ServerAddress) (raft.AppendPipeline, error) {
//TODO implement mepanic("implement me")
}
func (t*transport) AppendEntries(id raft.ServerID, target raft.ServerAddress, args*raft.AppendEntriesRequest, resp*raft.AppendEntriesResponse) error {
//TODO implement mepanic("implement me")
}
func (t*transport) RequestVote(id raft.ServerID, target raft.ServerAddress, args*raft.RequestVoteRequest, resp*raft.RequestVoteResponse) error {
//TODO implement mepanic("implement me")
}
func (t*transport) InstallSnapshot(id raft.ServerID, target raft.ServerAddress, args*raft.InstallSnapshotRequest, resp*raft.InstallSnapshotResponse, data io.Reader) error {
//TODO implement mepanic("implement me")
}
func (t*transport) TimeoutNow(id raft.ServerID, target raft.ServerAddress, args*raft.TimeoutNowRequest, resp*raft.TimeoutNowResponse) error {
//TODO implement mepanic("implement me")
}
func (t*transport) Consumer() <-chan raft.RPC {
//implement mepanic("implement me")
}
func (t*transport) LocalAddr() raft.ServerAddress {
//implement mepanic("implement me")
}
func (t*transport) EncodePeer(id raft.ServerID, addr raft.ServerAddress) []byte {
//implement mepanic("implement me")
}
func (t*transport) DecodePeer([]byte) raft.ServerAddress {
//implement mepanic("implement me")
}
func (t*transport) SetHeartbeatHandler(handlerfunc(rpc raft.RPC)) {
//implement mepanic("implement me")
}

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions