On Tue, 2014-11-18 at 14:00 -0500, Rafael Schloming wrote: > On Tue, Nov 18, 2014 at 1:07 PM, Andrew Stitcher <[email protected]> > wrote: > > > On Tue, 2014-11-18 at 17:41 +0000, Gordon Sim wrote: > > > On 11/18/2014 05:29 PM, Andrew Stitcher wrote: > > > > On Tue, 2014-11-18 at 09:35 -0500, Rafael Schloming wrote: > > > >> 2. Given that we have a distinct configuration phase regardless, it is > > > >> simply unnecessary to force people to choose client vs server up > > front. We > > > >> can simply default the mode to client and have people set it to server > > > >> during the configuration phase if that is what they wish. > > > > > > > > As clients and servers are fundamentally different in usage it makes no > > > > semantic sense to me to create a client then "turn it into" a server. > > > > > > This is the context that I think I'm missing: why are they fundamentally > > > different? > > > > Despite the AMQP protocol being symmetric once established, the > > establishment cannot be symmetric. One party must initiate the > > connection (the TCP client) and one must be listening (the TCP server). > > > > That's a difference in the driver, not the transport.
That point his not to do with the code but a general point that one side of AMQP is implicitly a client and the other side a server even if the core protocol is symmetric. > > > > I'm thinking that this handshaking behaviour *is* fundamental to the > > purpose of the transport, as the major purpose of the transport is to > > coordinate the layers that are used to process the incoming byte stream. > > The transport client/serverness is not fundamental to the messaging > > semantics layered on top of it though. > > > > I think you're pointing to a difference in implementation, not API. Once, > once a transport is configured, it's observable semantics are absolutely > identical -- it just functions as a source/sink for bytes to send to/from > the wire. This is true whether it is configured to be a client or server, > whether it is configured to have a fixed set of layers or to be adaptable. Not at all, your own example, the BSD sockets interface has entirely different APIs for setting up the server (listening) end from the client (connecting) end. Even if it uses the same interface for pushing bytes into/out of the socket whether server or client. Andrew --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
