mirror of
https://github.com/actix/actix-web.git
synced 2024-12-02 06:21:10 +00:00
make WsWriter trait optional
This commit is contained in:
parent
7c4941f868
commit
be12d5e6fc
5 changed files with 104 additions and 37 deletions
|
@ -1,5 +1,10 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
## 0.6.2 (2018-05-09)
|
||||||
|
|
||||||
|
* WsWriter trait is optional.
|
||||||
|
|
||||||
|
|
||||||
## 0.6.1 (2018-05-08)
|
## 0.6.1 (2018-05-08)
|
||||||
|
|
||||||
* Fix http/2 payload streaming #215
|
* Fix http/2 payload streaming #215
|
||||||
|
|
|
@ -175,6 +175,8 @@ pub use httprequest::HttpRequest;
|
||||||
pub use httpresponse::HttpResponse;
|
pub use httpresponse::HttpResponse;
|
||||||
pub use json::Json;
|
pub use json::Json;
|
||||||
pub use scope::Scope;
|
pub use scope::Scope;
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
pub use ws::WsWriter;
|
pub use ws::WsWriter;
|
||||||
|
|
||||||
#[cfg(feature = "openssl")]
|
#[cfg(feature = "openssl")]
|
||||||
|
|
|
@ -518,9 +518,7 @@ impl ClientWriter {
|
||||||
fn as_mut(&mut self) -> &mut Inner {
|
fn as_mut(&mut self) -> &mut Inner {
|
||||||
unsafe { &mut *self.inner.get() }
|
unsafe { &mut *self.inner.get() }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
impl WsWriter for ClientWriter {
|
|
||||||
/// Send text frame
|
/// Send text frame
|
||||||
#[inline]
|
#[inline]
|
||||||
fn text<T: Into<Binary>>(&mut self, text: T) {
|
fn text<T: Into<Binary>>(&mut self, text: T) {
|
||||||
|
@ -561,3 +559,35 @@ impl WsWriter for ClientWriter {
|
||||||
self.write(Frame::close(reason, true));
|
self.write(Frame::close(reason, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl WsWriter for ClientWriter {
|
||||||
|
/// Send text frame
|
||||||
|
#[inline]
|
||||||
|
fn send_text<T: Into<Binary>>(&mut self, text: T) {
|
||||||
|
self.text(text)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send binary frame
|
||||||
|
#[inline]
|
||||||
|
fn send_binary<B: Into<Binary>>(&mut self, data: B) {
|
||||||
|
self.binary(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send ping frame
|
||||||
|
#[inline]
|
||||||
|
fn send_ping(&mut self, message: &str) {
|
||||||
|
self.ping(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send pong frame
|
||||||
|
#[inline]
|
||||||
|
fn send_pong(&mut self, message: &str) {
|
||||||
|
self.pong(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send close frame
|
||||||
|
#[inline]
|
||||||
|
fn send_close(&mut self, reason: Option<CloseReason>) {
|
||||||
|
self.close(reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -149,36 +149,6 @@ where
|
||||||
Drain::new(rx)
|
Drain::new(rx)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if connection still open
|
|
||||||
#[inline]
|
|
||||||
pub fn connected(&self) -> bool {
|
|
||||||
!self.disconnected
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
fn add_frame(&mut self, frame: ContextFrame) {
|
|
||||||
if self.stream.is_none() {
|
|
||||||
self.stream = Some(SmallVec::new());
|
|
||||||
}
|
|
||||||
if let Some(s) = self.stream.as_mut() {
|
|
||||||
s.push(frame)
|
|
||||||
}
|
|
||||||
self.inner.modify();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Handle of the running future
|
|
||||||
///
|
|
||||||
/// SpawnHandle is the handle returned by `AsyncContext::spawn()` method.
|
|
||||||
pub fn handle(&self) -> SpawnHandle {
|
|
||||||
self.inner.curr_handle()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<A, S> WsWriter for WebsocketContext<A, S>
|
|
||||||
where
|
|
||||||
A: Actor<Context = Self>,
|
|
||||||
S: 'static,
|
|
||||||
{
|
|
||||||
/// Send text frame
|
/// Send text frame
|
||||||
#[inline]
|
#[inline]
|
||||||
fn text<T: Into<Binary>>(&mut self, text: T) {
|
fn text<T: Into<Binary>>(&mut self, text: T) {
|
||||||
|
@ -218,6 +188,66 @@ where
|
||||||
fn close(&mut self, reason: Option<CloseReason>) {
|
fn close(&mut self, reason: Option<CloseReason>) {
|
||||||
self.write(Frame::close(reason, false));
|
self.write(Frame::close(reason, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Check if connection still open
|
||||||
|
#[inline]
|
||||||
|
pub fn connected(&self) -> bool {
|
||||||
|
!self.disconnected
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn add_frame(&mut self, frame: ContextFrame) {
|
||||||
|
if self.stream.is_none() {
|
||||||
|
self.stream = Some(SmallVec::new());
|
||||||
|
}
|
||||||
|
if let Some(s) = self.stream.as_mut() {
|
||||||
|
s.push(frame)
|
||||||
|
}
|
||||||
|
self.inner.modify();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Handle of the running future
|
||||||
|
///
|
||||||
|
/// SpawnHandle is the handle returned by `AsyncContext::spawn()` method.
|
||||||
|
pub fn handle(&self) -> SpawnHandle {
|
||||||
|
self.inner.curr_handle()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<A, S> WsWriter for WebsocketContext<A, S>
|
||||||
|
where
|
||||||
|
A: Actor<Context = Self>,
|
||||||
|
S: 'static,
|
||||||
|
{
|
||||||
|
/// Send text frame
|
||||||
|
#[inline]
|
||||||
|
fn send_text<T: Into<Binary>>(&mut self, text: T) {
|
||||||
|
self.text(text)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send binary frame
|
||||||
|
#[inline]
|
||||||
|
fn send_binary<B: Into<Binary>>(&mut self, data: B) {
|
||||||
|
self.binary(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send ping frame
|
||||||
|
#[inline]
|
||||||
|
fn send_ping(&mut self, message: &str) {
|
||||||
|
self.ping(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send pong frame
|
||||||
|
#[inline]
|
||||||
|
fn send_pong(&mut self, message: &str) {
|
||||||
|
self.pong(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send close frame
|
||||||
|
#[inline]
|
||||||
|
fn send_close(&mut self, reason: Option<CloseReason>) {
|
||||||
|
self.close(reason)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<A, S> ActorHttpContext for WebsocketContext<A, S>
|
impl<A, S> ActorHttpContext for WebsocketContext<A, S>
|
||||||
|
|
|
@ -343,15 +343,15 @@ where
|
||||||
/// Common writing methods for a websocket.
|
/// Common writing methods for a websocket.
|
||||||
pub trait WsWriter {
|
pub trait WsWriter {
|
||||||
/// Send a text
|
/// Send a text
|
||||||
fn text<T: Into<Binary>>(&mut self, text: T);
|
fn send_text<T: Into<Binary>>(&mut self, text: T);
|
||||||
/// Send a binary
|
/// Send a binary
|
||||||
fn binary<B: Into<Binary>>(&mut self, data: B);
|
fn send_binary<B: Into<Binary>>(&mut self, data: B);
|
||||||
/// Send a ping message
|
/// Send a ping message
|
||||||
fn ping(&mut self, message: &str);
|
fn send_ping(&mut self, message: &str);
|
||||||
/// Send a pong message
|
/// Send a pong message
|
||||||
fn pong(&mut self, message: &str);
|
fn send_pong(&mut self, message: &str);
|
||||||
/// Close the connection
|
/// Close the connection
|
||||||
fn close(&mut self, reason: Option<CloseReason>);
|
fn send_close(&mut self, reason: Option<CloseReason>);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
Loading…
Reference in a new issue