aquatic_http: add Connection methods, enabling making 'inner' private

This commit is contained in:
Joakim Frostegård 2020-07-04 13:35:52 +02:00
parent 1ea1f0b749
commit c28e764929
2 changed files with 28 additions and 8 deletions

View file

@ -191,7 +191,7 @@ impl <'a>TlsHandshakeMachine {
} }
pub enum ConnectionInner { enum ConnectionInner {
Established(EstablishedConnection), Established(EstablishedConnection),
InProgress(TlsHandshakeMachine), InProgress(TlsHandshakeMachine),
} }
@ -199,7 +199,7 @@ pub enum ConnectionInner {
pub struct Connection { pub struct Connection {
pub valid_until: ValidUntil, pub valid_until: ValidUntil,
pub inner: ConnectionInner, inner: ConnectionInner,
} }
@ -223,6 +223,26 @@ impl Connection {
} }
} }
pub fn from_established(
valid_until: ValidUntil,
established: EstablishedConnection,
) -> Self {
Self {
valid_until,
inner: ConnectionInner::Established(established)
}
}
pub fn from_in_progress(
valid_until: ValidUntil,
machine: TlsHandshakeMachine,
) -> Self {
Self {
valid_until,
inner: ConnectionInner::InProgress(machine)
}
}
pub fn get_established(&mut self) -> Option<&mut EstablishedConnection> { pub fn get_established(&mut self) -> Option<&mut EstablishedConnection> {
if let ConnectionInner::Established(ref mut established) = self.inner { if let ConnectionInner::Established(ref mut established) = self.inner {
Some(established) Some(established)

View file

@ -252,18 +252,18 @@ pub fn run_handshakes_and_read_requests(
{ {
match handshake_machine.establish_tls(){ match handshake_machine.establish_tls(){
Ok(established) => { Ok(established) => {
let connection = Connection { let connection = Connection::from_established(
valid_until, valid_until,
inner: ConnectionInner::Established(established) established
}; );
connections.insert(poll_token, connection); connections.insert(poll_token, connection);
}, },
Err(TlsHandshakeMachineError::WouldBlock(machine)) => { Err(TlsHandshakeMachineError::WouldBlock(machine)) => {
let connection = Connection { let connection = Connection::from_in_progress(
valid_until, valid_until,
inner: ConnectionInner::InProgress(machine) machine
}; );
connections.insert(poll_token, connection); connections.insert(poll_token, connection);