mirror of
https://github.com/n0-computer/noq.git
synced 2026-09-23 11:45:25 +00:00
Factor out common stream read code
This commit is contained in:
committed by
Dirkjan Ochtman
parent
04c167942e
commit
e4c51baf64
+16
-23
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user