The design is neat. Sadly too much work to implement it in libzmq, and
more profitable areas to work on.

On Mon, Feb 15, 2016 at 12:33 PM, Tom Quarendon
<tom.quaren...@teamwpc.co.uk> wrote:
> The idea with resources would be that when you connected or bound, you just 
> added the resource name after the endpoint, as in:
> connect("tcp://localhost:5555/resource")
>
> Has the great advantage that it is completely encapsulated in the endpoint 
> string, so any existing code that uses ZeroMQ, any protocol that might be 
> implemented can trivially be made to run over a "multiplexed" port, you just 
> change the endpoint string.
>
> Adding the information as an extra frame means you start needing to alter 
> your protocol logic, and you need to be aware of what framing your protocol 
> might use. If your protocol already used multiple frames per message then you 
> have the issue of finding the "service routing" frame.
>
> Search for "ZMTP 3.0 "Resources". Implemented?"
>
> -----Original Message-----
> From: zeromq-dev-boun...@lists.zeromq.org 
> [mailto:zeromq-dev-boun...@lists.zeromq.org] On Behalf Of Alex Bligh
> Sent: 11 February 2016 12:22
> To: ZeroMQ development list <zeromq-dev@lists.zeromq.org>
> Cc: Alex Bligh <a...@alex.org.uk>
> Subject: Re: [zeromq-dev] Multiplexing a TCP endpoint
>
>
> On 10 Feb 2016, at 19:11, Tom Quarendon <tom.quaren...@teamwpc.co.uk> wrote:
>
>> This is what "resources" in ZMTP 3.1 were designed for. No implementation 
>> yet though (see other discussion on his list) :-)
>
> Thanks. That is pretty much exactly what I was looking for (other than the 
> 'no implementation yet though' bit).
>
> I've only just subscribed to the list and my google search through the 
> archives led only to a post in 2013 hoping this would be in zeromq 4.0. Do 
> you have a pointer to the discussion (e.g. the thread title)?
>
> I've read the relevant part of the ZTMP specification. In essence the 
> 'resource' seems to be transmitted in the metadata when the connection is set 
> up. I'm guessing to use this feature in a compatible way without 
> implementation details, then:
>
> 1. On the 'connect' side, I'd merely need to add some metadata
>
> 2. On the 'bind' side, I'd need to run some form of multiplexer and look at 
> the metadata property.
>
> I can't however see an API way to set or read from the metadata dictionary 
> before any messages are passed.
>
> Am I therefore correct that it isn't possible to implement this without a 
> change to zeromq itself?
>
>> You would have to write the proxy loop yourself. So do a select on the 
>> external socket and all the internal sockets and know that when you pull a 
>> message from the external socket that you peel off the first frame after the 
>> delimiter, then use the service name it includes to pick which internal 
>> socket to pass the rest of the message to. The services then run 
>> independently on their own inproc (or even out of process on ipc or tcp) 
>> sockets. It's what I would end up doing to do the same thing.
>
> That's pretty much what I concluded save for the fact that I had thought the 
> service ID should probably be the innermost frame (possibly after the empty 
> frame delimiter and with it's own zero frame delimiter) so the transport over 
> TCP could (if necessary) be routed transparently through RTR sockets.
>
> --
> Alex Bligh
>
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to