stream-tungstenite 0.6.1

A streaming implementation of the Tungstenite WebSocket protocol
Documentation
//! No-operation handshaker implementation.

use async_trait::async_trait;

use super::traits::{HandshakeReceiver, HandshakeSender, Handshaker};
use crate::context::ConnectionContext;
use crate::error::HandshakeError;

/// No-operation handshaker - does nothing
///
/// Use this when no application-level handshake is required.
#[derive(Debug, Clone, Copy, Default)]
pub struct NoOpHandshaker;

impl NoOpHandshaker {
    /// Create a new no-op handshaker
    #[must_use]
    pub const fn new() -> Self {
        Self
    }
}

#[async_trait]
impl Handshaker for NoOpHandshaker {
    async fn handshake(
        &self,
        _sender: &mut dyn HandshakeSender,
        _receiver: &mut dyn HandshakeReceiver,
        _context: &ConnectionContext,
    ) -> Result<(), HandshakeError> {
        Ok(())
    }

    fn name(&self) -> &'static str {
        "noop"
    }

    fn timeout(&self) -> Option<std::time::Duration> {
        None // No timeout needed
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_noop_handshaker() {
        let handshaker = NoOpHandshaker::new();
        assert_eq!(handshaker.name(), "noop");
        assert!(handshaker.timeout().is_none());
    }
}