Update rpc event handling.

This commit is contained in:
Age Manning 2019-03-15 02:13:16 +11:00
parent c06e8ffa5b
commit 24c7f180e2
No known key found for this signature in database
GPG Key ID: 05EED64B79E06A93

View File

@ -22,7 +22,7 @@ use tokio::io::{AsyncRead, AsyncWrite};
pub struct Rpc<TSubstream> { pub struct Rpc<TSubstream> {
/// Queue of events to processed. /// Queue of events to processed.
events: Vec<RpcEvent>, events: Vec<NetworkBehaviourAction<RpcEvent, RpcEvent>>,
/// Pins the generic substream. /// Pins the generic substream.
marker: PhantomData<TSubstream>, marker: PhantomData<TSubstream>,
} }
@ -36,13 +36,16 @@ impl<TSubstream> Rpc<TSubstream> {
} }
/// Submits and RPC request. /// Submits and RPC request.
pub fn send_request(&mut self, id: u64, method_id: u16, body: RPCRequest) { pub fn send_request(&mut self, peer_id: PeerId, id: u64, method_id: u16, body: RPCRequest) {
let request = RpcEvent::Request { let request = RpcEvent::Request {
id, id,
method_id, method_id,
body, body,
}; };
self.events.push(request); self.events.push(NetworkBehaviourAction::SendEvent {
peer_id,
event: request,
});
} }
} }
@ -67,17 +70,18 @@ where
fn inject_node_event( fn inject_node_event(
&mut self, &mut self,
source: PeerId, _source: PeerId,
event: <Self::ProtocolsHandler as ProtocolsHandler>::OutEvent, event: <Self::ProtocolsHandler as ProtocolsHandler>::OutEvent,
) { ) {
// ignore successful sends event // ignore successful send events
let event = match event { let event = match event {
OneShotEvent::Rx(event) => event, OneShotEvent::Rx(event) => event,
OneShotEvent::Sent => return, OneShotEvent::Sent => return,
}; };
// send the event to the user // send the event to the user
self.events.push(event); self.events
.push(NetworkBehaviourAction::GenerateEvent(event));
} }
fn poll( fn poll(
@ -90,7 +94,7 @@ where
>, >,
> { > {
if !self.events.is_empty() { if !self.events.is_empty() {
return Async::Ready(NetworkBehaviourAction::GenerateEvent(self.events.remove(0))); return Async::Ready(self.events.remove(0));
} }
Async::NotReady Async::NotReady
} }