dope-tls 0.17.0

TCP TLS streams for dope runtime, shin-backed
Documentation
use super::{ConnectionState, Role, Runtime, SendState, TlsConnection};

pub(super) struct Open<'a, 'd, R: Role> {
    runtime: &'a mut Runtime<'d, R>,
}

impl<'a, 'd, R: Role> Open<'a, 'd, R> {
    pub(super) fn new(runtime: &'a mut Runtime<'d, R>) -> Self {
        Self { runtime }
    }

    pub(super) fn take(self) -> Option<(TlsConnection<'d, R>, SendState)> {
        let send = SendState::new(self.runtime.buffers.send.clone());
        let tls = R::open(
            &mut self.runtime.role,
            self.runtime.buffers.recv.clone(),
            self.runtime.buffers.pending.clone(),
        )?;
        Some((
            TlsConnection {
                state: ConnectionState::new(tls),
                send_inflight: false,
            },
            send,
        ))
    }
}