srt_protocol/protocol/handshake/
mod.rs

1use crate::packet::{ControlTypes, HandshakeControlInfo, ShakeType};
2
3#[allow(clippy::large_enum_variant)]
4#[derive(Debug, Eq, PartialEq, Clone)]
5pub enum Handshake {
6    Connector,
7    Listener(ControlTypes),
8    Rendezvous(Option<ControlTypes>),
9}
10
11impl Handshake {
12    pub fn handle_handshake(&self, handshake: HandshakeControlInfo) -> Option<ControlTypes> {
13        match (self, handshake.shake_type) {
14            (Handshake::Rendezvous(control), ShakeType::Conclusion) => control.clone(),
15            (Handshake::Listener(control), _) => Some(control.clone()),
16            (Handshake::Connector, _) | (Handshake::Rendezvous(_), _) => None,
17        }
18    }
19}