websocket_base/ws/
sender.rs

1//! Provides a trait for sending data frames and messages.
2//!
3//! See the `ws` module documentation for more information.
4
5use crate::result::WebSocketResult;
6use crate::ws::dataframe::DataFrame;
7use crate::ws::Message;
8use std::io::Write;
9
10/// A trait for sending data frames and messages.
11pub trait Sender {
12	/// Should the messages sent be masked.
13	/// See the [RFC](https://tools.ietf.org/html/rfc6455#section-5.3)
14	/// for more detail.
15	fn is_masked(&self) -> bool;
16
17	/// Sends a single data frame using this sender.
18	fn send_dataframe<D, W>(&mut self, writer: &mut W, dataframe: &D) -> WebSocketResult<()>
19	where
20		D: DataFrame,
21		W: Write,
22	{
23		dataframe.write_to(writer, self.is_masked())?;
24		Ok(())
25	}
26
27	/// Sends a single message using this sender.
28	fn send_message<M, W>(&mut self, writer: &mut W, message: &M) -> WebSocketResult<()>
29	where
30		M: Message,
31		W: Write,
32	{
33		message.serialize(writer, self.is_masked())?;
34		Ok(())
35	}
36}