srt_protocol/protocol/handshake/
mod.rs1use 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}