Add basic Gossip sync handlers

This commit is contained in:
Paul Hauner
2019-03-25 14:27:20 +11:00
parent 267477ffc2
commit 708d9b5674
7 changed files with 119 additions and 8 deletions

View File

@@ -4,7 +4,7 @@ use crate::service::{NetworkMessage, OutgoingMessage};
use crate::sync::SimpleSync;
use crossbeam_channel::{unbounded as channel, Sender};
use eth2_libp2p::{
rpc::{RPCRequest, RPCResponse},
rpc::{IncomingGossip, RPCRequest, RPCResponse},
PeerId, RPCEvent,
};
use futures::future;
@@ -39,8 +39,8 @@ pub enum HandlerMessage {
PeerDisconnected(PeerId),
/// An RPC response/request has been received.
RPC(PeerId, RPCEvent),
/// A block has been imported.
BlockImported(), //TODO: This comes from pub-sub - decide its contents
/// A gossip message has been received.
IncomingGossip(PeerId, IncomingGossip),
}
impl MessageHandler {
@@ -90,6 +90,10 @@ impl MessageHandler {
HandlerMessage::RPC(peer_id, rpc_event) => {
self.handle_rpc_message(peer_id, rpc_event);
}
// we have received an RPC message request/response
HandlerMessage::IncomingGossip(peer_id, gossip) => {
self.handle_gossip(peer_id, gossip);
}
//TODO: Handle all messages
_ => {}
}
@@ -186,6 +190,19 @@ impl MessageHandler {
}
};
}
/// Handle RPC messages
fn handle_gossip(&mut self, peer_id: PeerId, gossip_message: IncomingGossip) {
match gossip_message {
IncomingGossip::Block(message) => {
self.sync
.on_block_gossip(peer_id, message, &mut self.network_context)
}
IncomingGossip::Attestation(message) => {
//
}
}
}
}
pub struct NetworkContext {