From 58181773df64f2067794c53deb7b9b5ed5d17679 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Mon, 18 Dec 2017 07:38:41 +0100 Subject: [PATCH 1/6] Rename read/write to send/receive for better understanding. Closes #1596 --- .../http4s/blazecore/websocket/Http4sWSStage.scala | 4 ++-- .../scala/org/http4s/websocket/Websocket.scala | 4 ++-- .../org/http4s/server/websocket/package.scala | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/blaze-core/src/main/scala/org/http4s/blazecore/websocket/Http4sWSStage.scala b/blaze-core/src/main/scala/org/http4s/blazecore/websocket/Http4sWSStage.scala index 489b2239603..ce70946c332 100644 --- a/blaze-core/src/main/scala/org/http4s/blazecore/websocket/Http4sWSStage.scala +++ b/blaze-core/src/main/scala/org/http4s/blazecore/websocket/Http4sWSStage.scala @@ -88,8 +88,8 @@ class Http4sWSStage[F[_]](ws: ws4s.Websocket[F])(implicit F: Effect[F], val ec: val wsStream = for { dead <- deadSignal - in = inputstream.to(ws.write).onFinalize(onStreamFinalize) - out = ws.read.onFinalize(onStreamFinalize).to(snk).drain + in = inputstream.to(ws.receive).onFinalize(onStreamFinalize) + out = ws.send.onFinalize(onStreamFinalize).to(snk).drain merged <- in.mergeHaltR(out).interruptWhen(dead).onFinalize(sendClose).run } yield merged diff --git a/core/src/main/scala/org/http4s/websocket/Websocket.scala b/core/src/main/scala/org/http4s/websocket/Websocket.scala index e4a6be9928e..cf2d7010a74 100644 --- a/core/src/main/scala/org/http4s/websocket/Websocket.scala +++ b/core/src/main/scala/org/http4s/websocket/Websocket.scala @@ -4,6 +4,6 @@ import fs2._ import org.http4s.websocket.WebsocketBits.WebSocketFrame private[http4s] final case class Websocket[F[_]]( - read: Stream[F, WebSocketFrame], - write: Sink[F, WebSocketFrame] + send: Stream[F, WebSocketFrame], + receive: Sink[F, WebSocketFrame] ) diff --git a/server/src/main/scala/org/http4s/server/websocket/package.scala b/server/src/main/scala/org/http4s/server/websocket/package.scala index 8337a2245af..3620346382a 100644 --- a/server/src/main/scala/org/http4s/server/websocket/package.scala +++ b/server/src/main/scala/org/http4s/server/websocket/package.scala @@ -17,8 +17,8 @@ package object websocket { /** * Build a response which will accept an HTTP websocket upgrade request and initiate a websocket connection using the * supplied exchange to process and respond to websocket messages. - * @param read The read side of the Exchange represents the stream of messages that should be sent to the client - * @param write The write side of the Exchange is a sink to which the framework will push the websocket messages + * @param send The send side of the Exchange represents the stream of messages that should be sent to the client + * @param receive The receive side of the Exchange is a sink to which the framework will push the websocket messages * received from the client. * Once both streams have terminated, the server will initiate a close of the websocket connection. * As defined in the websocket specification, this means the server @@ -40,13 +40,13 @@ package object websocket { * @param status The status code to return to a client making a non-websocket HTTP request to this route */ def WS[F[_]]( - read: Stream[F, WebSocketFrame], - write: Sink[F, WebSocketFrame], + send: Stream[F, WebSocketFrame], + receive: Sink[F, WebSocketFrame], status: F[Response[F]])(implicit F: Functor[F]): F[Response[F]] = - status.map(_.withAttribute(AttributeEntry(websocketKey[F], Websocket(read, write)))) + status.map(_.withAttribute(AttributeEntry(websocketKey[F], Websocket(send, receive)))) - def WS[F[_]](read: Stream[F, WebSocketFrame], write: Sink[F, WebSocketFrame])( + def WS[F[_]](send: Stream[F, WebSocketFrame], receive: Sink[F, WebSocketFrame])( implicit F: Monad[F], W: EntityEncoder[F, String]): F[Response[F]] = - WS(read, write, Response[F](Status.NotImplemented).withBody("This is a WebSocket route.")) + WS(send, receive, Response[F](Status.NotImplemented).withBody("This is a WebSocket route.")) } From ea15b1369293f2d1bae2de96e094320f25ebbab9 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Mon, 18 Dec 2017 14:39:01 +0100 Subject: [PATCH 2/6] Add deprecationName to Websocket read/write method --- core/src/main/scala/org/http4s/websocket/Websocket.scala | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/org/http4s/websocket/Websocket.scala b/core/src/main/scala/org/http4s/websocket/Websocket.scala index cf2d7010a74..ac64b6575fc 100644 --- a/core/src/main/scala/org/http4s/websocket/Websocket.scala +++ b/core/src/main/scala/org/http4s/websocket/Websocket.scala @@ -4,6 +4,9 @@ import fs2._ import org.http4s.websocket.WebsocketBits.WebSocketFrame private[http4s] final case class Websocket[F[_]]( - send: Stream[F, WebSocketFrame], - receive: Sink[F, WebSocketFrame] -) + @deprecatedName('read) send: Stream[F, WebSocketFrame], + @deprecatedName('write) receive: Sink[F, WebSocketFrame] +) { + def read: Stream[F, WebSocketFrame] = send + def write: Sink[F, WebSocketFrame] = receive +} From 41b4db168e081b9d83ea7cd6eeed65108fed2a39 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Mon, 18 Dec 2017 15:51:50 +0100 Subject: [PATCH 3/6] Add version to deprecatedName --- core/src/main/scala/org/http4s/websocket/Websocket.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/org/http4s/websocket/Websocket.scala b/core/src/main/scala/org/http4s/websocket/Websocket.scala index ac64b6575fc..422be3a6c77 100644 --- a/core/src/main/scala/org/http4s/websocket/Websocket.scala +++ b/core/src/main/scala/org/http4s/websocket/Websocket.scala @@ -4,8 +4,8 @@ import fs2._ import org.http4s.websocket.WebsocketBits.WebSocketFrame private[http4s] final case class Websocket[F[_]]( - @deprecatedName('read) send: Stream[F, WebSocketFrame], - @deprecatedName('write) receive: Sink[F, WebSocketFrame] + @deprecatedName('read, "0.18-M6") send: Stream[F, WebSocketFrame], + @deprecatedName('write, "0.18-M6") receive: Sink[F, WebSocketFrame] ) { def read: Stream[F, WebSocketFrame] = send def write: Sink[F, WebSocketFrame] = receive From a311b7c78dce3fb55d2b8910c0369585d0fd1e98 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Mon, 18 Dec 2017 20:53:25 +0100 Subject: [PATCH 4/6] Fix to correct deprecation version --- core/src/main/scala/org/http4s/websocket/Websocket.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/org/http4s/websocket/Websocket.scala b/core/src/main/scala/org/http4s/websocket/Websocket.scala index 422be3a6c77..59ba162ea28 100644 --- a/core/src/main/scala/org/http4s/websocket/Websocket.scala +++ b/core/src/main/scala/org/http4s/websocket/Websocket.scala @@ -4,8 +4,8 @@ import fs2._ import org.http4s.websocket.WebsocketBits.WebSocketFrame private[http4s] final case class Websocket[F[_]]( - @deprecatedName('read, "0.18-M6") send: Stream[F, WebSocketFrame], - @deprecatedName('write, "0.18-M6") receive: Sink[F, WebSocketFrame] + @deprecatedName('read, "0.18.0-M7") send: Stream[F, WebSocketFrame], + @deprecatedName('write, "0.18.0-M7") receive: Sink[F, WebSocketFrame] ) { def read: Stream[F, WebSocketFrame] = send def write: Sink[F, WebSocketFrame] = receive From eda31978bd464770e3596a02a73b2f96f7ca4fe3 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Tue, 19 Dec 2017 07:01:35 +0100 Subject: [PATCH 5/6] Clearify parameter description --- .../src/main/scala/org/http4s/server/websocket/package.scala | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/server/src/main/scala/org/http4s/server/websocket/package.scala b/server/src/main/scala/org/http4s/server/websocket/package.scala index 3620346382a..f076770a6ee 100644 --- a/server/src/main/scala/org/http4s/server/websocket/package.scala +++ b/server/src/main/scala/org/http4s/server/websocket/package.scala @@ -17,9 +17,8 @@ package object websocket { /** * Build a response which will accept an HTTP websocket upgrade request and initiate a websocket connection using the * supplied exchange to process and respond to websocket messages. - * @param send The send side of the Exchange represents the stream of messages that should be sent to the client - * @param receive The receive side of the Exchange is a sink to which the framework will push the websocket messages - * received from the client. + * @param send The send side of the Exchange represents the outgoing stream of messages that should be sent to the client + * @param receive The receive side of the Exchange is a sink to which the framework will push the incoming websocket messages * Once both streams have terminated, the server will initiate a close of the websocket connection. * As defined in the websocket specification, this means the server * will send a CloseFrame to the client and wait for a CloseFrame in response before closing the From cb667d40a2a35bb9d703259591ce9a5a3301e734 Mon Sep 17 00:00:00 2001 From: Robert Soeldner Date: Tue, 19 Dec 2017 07:05:55 +0100 Subject: [PATCH 6/6] Fix compilation on Scala 2.11 --- core/src/main/scala/org/http4s/websocket/Websocket.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/org/http4s/websocket/Websocket.scala b/core/src/main/scala/org/http4s/websocket/Websocket.scala index 59ba162ea28..958412df90a 100644 --- a/core/src/main/scala/org/http4s/websocket/Websocket.scala +++ b/core/src/main/scala/org/http4s/websocket/Websocket.scala @@ -4,9 +4,13 @@ import fs2._ import org.http4s.websocket.WebsocketBits.WebSocketFrame private[http4s] final case class Websocket[F[_]]( - @deprecatedName('read, "0.18.0-M7") send: Stream[F, WebSocketFrame], - @deprecatedName('write, "0.18.0-M7") receive: Sink[F, WebSocketFrame] + @deprecatedName('read) send: Stream[F, WebSocketFrame], + @deprecatedName('write) receive: Sink[F, WebSocketFrame] ) { + + @deprecated("Parameter has been renamed to `send`", "0.18.0-M7") def read: Stream[F, WebSocketFrame] = send + + @deprecated("Parameter has been renamed to `receive`", "0.18.0-M7") def write: Sink[F, WebSocketFrame] = receive }