diff --git a/aquatic_http/src/lib/network/connection.rs b/aquatic_http/src/lib/network/connection.rs index effccd9..39af0f3 100644 --- a/aquatic_http/src/lib/network/connection.rs +++ b/aquatic_http/src/lib/network/connection.rs @@ -191,7 +191,7 @@ impl <'a>TlsHandshakeMachine { } -pub enum ConnectionInner { +enum ConnectionInner { Established(EstablishedConnection), InProgress(TlsHandshakeMachine), } @@ -199,7 +199,7 @@ pub enum ConnectionInner { pub struct Connection { 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> { if let ConnectionInner::Established(ref mut established) = self.inner { Some(established) diff --git a/aquatic_http/src/lib/network/mod.rs b/aquatic_http/src/lib/network/mod.rs index d796825..2b23757 100644 --- a/aquatic_http/src/lib/network/mod.rs +++ b/aquatic_http/src/lib/network/mod.rs @@ -252,18 +252,18 @@ pub fn run_handshakes_and_read_requests( { match handshake_machine.establish_tls(){ Ok(established) => { - let connection = Connection { + let connection = Connection::from_established( valid_until, - inner: ConnectionInner::Established(established) - }; + established + ); connections.insert(poll_token, connection); }, Err(TlsHandshakeMachineError::WouldBlock(machine)) => { - let connection = Connection { + let connection = Connection::from_in_progress( valid_until, - inner: ConnectionInner::InProgress(machine) - }; + machine + ); connections.insert(poll_token, connection);