use crate::{
sealed,
socket::{Socket, SocketType},
};
pub type ScatterSocket = Socket<Scatter>;
pub struct Scatter {}
impl sealed::SenderFlag for Scatter {}
impl sealed::SocketType for Scatter {
fn raw_socket_type() -> SocketType {
SocketType::Scatter
}
}
unsafe impl Sync for Socket<Scatter> {}
unsafe impl Send for Socket<Scatter> {}
impl Socket<Scatter> {}
#[cfg(feature = "builder")]
pub(crate) mod builder {
use crate::socket::SocketBuilder;
pub type ScatterBuilder = SocketBuilder;
#[cfg(test)]
mod scatter_builder_tests {
use super::ScatterBuilder;
use crate::{
auth::ZapDomain,
prelude::{Context, ScatterSocket, ZmqResult},
security::SecurityMechanism,
};
#[test]
fn builder_from_default() -> ZmqResult<()> {
let context = Context::new()?;
let socket: ScatterSocket = ScatterBuilder::default().build_from_context(&context)?;
assert_eq!(socket.connect_timeout()?, 0);
assert_eq!(socket.handshake_interval()?, 30_000);
assert_eq!(socket.heartbeat_interval()?, 0);
assert_eq!(socket.heartbeat_timeout()?, -1);
assert_eq!(socket.heartbeat_timetolive()?, 0);
assert!(!socket.immediate()?);
assert!(!socket.ipv6()?);
assert_eq!(socket.linger()?, -1);
assert_eq!(socket.max_message_size()?, -1);
assert_eq!(socket.receive_buffer()?, -1);
assert_eq!(socket.receive_highwater_mark()?, 1_000);
assert_eq!(socket.receive_timeout()?, -1);
assert_eq!(socket.reconnect_interval()?, 100);
assert_eq!(socket.reconnect_interval_max()?, 0);
assert_eq!(socket.send_buffer()?, -1);
assert_eq!(socket.send_highwater_mark()?, 1_000);
assert_eq!(socket.send_timeout()?, -1);
assert_eq!(socket.zap_domain()?, ZapDomain::new("".into()));
assert_eq!(socket.security_mechanism()?, SecurityMechanism::Null);
Ok(())
}
}
}