1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//! The default implementation of a WebSocket Sender.

use std::io::Write;
use dataframe::DataFrame;
use result::WebSocketResult;
use ws::util::dataframe::write_dataframe;
use ws;

/// A Sender that wraps a Writer and provides a default implementation using
/// DataFrames and Messages.
pub struct Sender<W> {
	inner: W
}

impl<W> Sender<W> {
	/// Create a new WebSocketSender using the specified Writer.
	pub fn new(writer: W) -> Sender<W> {
		Sender {
			inner: writer
		}
	}
	/// Returns a reference to the underlying Writer.
	pub fn get_ref(&self) -> &W {
		&self.inner
	}
	/// Returns a mutable reference to the underlying Writer.
	pub fn get_mut(&mut self) -> &mut W {
		&mut self.inner
	}
}

impl<W: Write> ws::Sender<DataFrame> for Sender<W> {
	fn send_dataframe(&mut self, dataframe: DataFrame) -> WebSocketResult<()> {
		write_dataframe(&mut self.inner, false, dataframe)
	}
}