On 01/20/2012 11:59 AM, Scott Carey wrote:
> For certain kinds of data it would be useful to continuously stream data
> from server to client (or vice-versa).

>From client to server this is supported today by using one-way messages
over a "stateful" transport, like SaslSocket or Netty.

>From server to client this is not currently implemented, but it should
be possible to extend the wire format to support this, similar to my
proposal in AVRO-625 (http://s.apache.org/1M5) to add call ids in
support of out-of-order responses.

To support server-to-client messages one might add to the metadata of
each request isRequest=true and for responses add isResponse=true.  Then
both client and server could examine each framed message that arrives
and determine its intent.  If a client reads a request then it parses it
as such and writes a response (unless the request is one way).

The initial request sent to a client should be prefixed by a
HandshakeRequest, itself preceded by a metadata list containing just
isHandshakeRequest=true.  Thus server-to-client messages could use a
different protocol than client-to-server messages.

To make this compatible we would add to the client's HandshakeRequest
metadata supportsCallbacks=true.  A server would only attempt callbacks
with clients that declared this when they connect.  Similarly, if the
server's HandshakeResponse does not include supportsCallbacks=true then
the client should not expect to receive any callbacks.

Doug

Reply via email to