From c28e764929eb99d94be6fd5eec2e43b29d1c736d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20Frosteg=C3=A5rd?= Date: Sat, 4 Jul 2020 13:35:52 +0200 Subject: [PATCH] aquatic_http: add Connection methods, enabling making 'inner' private --- aquatic_http/src/lib/network/connection.rs | 24 ++++++++++++++++++++-- aquatic_http/src/lib/network/mod.rs | 12 +++++------ 2 files changed, 28 insertions(+), 8 deletions(-) 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);