Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
client/finality-grandpa/src/observer: Poll NetworkBridge (#4766)
Browse files Browse the repository at this point in the history
Patch d4fbb89 reintegrated the periodic neighbor packet worker, by
moving its logic into a `Future` implementation on `NetworkBridge` which
needs to be polled by its upper layer.

Polling by the upper layer was implemented within the `Future`
implementation of the `VoterWork` struct but not within the `Future`
implementation of the `ObserverWork` struct. This patch adds polling of
the `NetworkBridge` to the latter.
  • Loading branch information
mxinden committed Jan 29, 2020
1 parent 2c9ce72 commit 7d58cee
Showing 1 changed file with 6 additions and 8 deletions.
14 changes: 6 additions & 8 deletions client/finality-grandpa/src/observer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,10 +336,8 @@ where
{
type Output = Result<(), Error>;

fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
let this = Pin::into_inner(self);

match Future::poll(Pin::new(&mut this.observer), cx) {
fn poll(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> {
match Future::poll(Pin::new(&mut self.observer), cx) {
Poll::Pending => {}
Poll::Ready(Ok(())) => {
// observer commit stream doesn't conclude naturally; this could reasonably be an error.
Expand All @@ -351,24 +349,24 @@ where
}
Poll::Ready(Err(CommandOrError::VoterCommand(command))) => {
// some command issued internally
this.handle_voter_command(command)?;
self.handle_voter_command(command)?;
cx.waker().wake_by_ref();
}
}

match Stream::poll_next(Pin::new(&mut this.voter_commands_rx), cx) {
match Stream::poll_next(Pin::new(&mut self.voter_commands_rx), cx) {
Poll::Pending => {}
Poll::Ready(None) => {
// the `voter_commands_rx` stream should never conclude since it's never closed.
return Poll::Ready(Ok(()))
}
Poll::Ready(Some(command)) => {
// some command issued externally
this.handle_voter_command(command)?;
self.handle_voter_command(command)?;
cx.waker().wake_by_ref();
}
}

Poll::Pending
Future::poll(Pin::new(&mut self.network), cx)
}
}

0 comments on commit 7d58cee

Please sign in to comment.