use async_trait::async_trait;
use super::traits::{HandshakeReceiver, HandshakeSender, Handshaker};
use crate::context::ConnectionContext;
use crate::error::HandshakeError;
#[derive(Debug, Clone, Copy, Default)]
pub struct NoOpHandshaker;
impl NoOpHandshaker {
#[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 }
}
#[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());
}
}