From e4c51baf64c19da0988b4187b353129cdf55204e Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Tue, 15 Jan 2019 20:54:11 -0800 Subject: [PATCH] Factor out common stream read code --- quinn-proto/src/stream.rs | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/quinn-proto/src/stream.rs b/quinn-proto/src/stream.rs index 1a3565600..385022c34 100644 --- a/quinn-proto/src/stream.rs +++ b/quinn-proto/src/stream.rs @@ -171,18 +171,7 @@ impl Recv { self.bytes_read += n as u64; Ok(n) } else { - match self.state { - RecvState::ResetRecvd { error_code, .. } => { - self.state = RecvState::Closed; - Err(ReadError::Reset { error_code }) - } - RecvState::Closed => unreachable!(), - RecvState::Recv { .. } => Err(ReadError::Blocked), - RecvState::DataRecvd { .. } => { - self.state = RecvState::Closed; - Err(ReadError::Finished) - } - } + Err(self.read_blocked()) } } @@ -195,17 +184,21 @@ impl Recv { self.bytes_read += x.0.len() as u64; Ok(x) } else { - match self.state { - RecvState::ResetRecvd { error_code, .. } => { - self.state = RecvState::Closed; - Err(ReadError::Reset { error_code }) - } - RecvState::Closed => unreachable!(), - RecvState::Recv { .. } => Err(ReadError::Blocked), - RecvState::DataRecvd { .. } => { - self.state = RecvState::Closed; - Err(ReadError::Finished) - } + Err(self.read_blocked()) + } + } + + fn read_blocked(&mut self) -> ReadError { + match self.state { + RecvState::ResetRecvd { error_code, .. } => { + self.state = RecvState::Closed; + ReadError::Reset { error_code } + } + RecvState::Closed => panic!("tried to read from a closed stream"), + RecvState::Recv { .. } => ReadError::Blocked, + RecvState::DataRecvd { .. } => { + self.state = RecvState::Closed; + ReadError::Finished } } }