On Mar 1, 2010, at 12:17 PM, Martin Sustrik wrote:

> Hi Chuck,
> 
>> For the Java and Ruby cases, why not move to a factory pattern where
>> a class method instantiates and returns an object containing the
>> context and all of the other bits?
>> // Java z = ZMQ.factory(); s = z.makeSocket(ZMQ::PUB);
>> # Ruby z = ZMQ.factory s = z.make_socket ZMQ::PUB
>> This way there isn't any confusion about instantiating what looks
>> like a namespace.
> 
> Yes. That's the same thing. It just renames context to factory.

Sure, but at least the syntax isn't as confusing as "new ZMQ()" which looks odd 
in every case.

>> I must say I prefer the hiding the context away. Whenever I am made
>> to pass the same parameter around I usually write a wrapper class for
>> it anyway just to handle it for me.
> 
> Right. The problem is that context cannot be completely hidden. The reason 
> why it exists at all is that several instances of 0MQ may get into the same 
> process - think of linking your app with two libraries, each using 0MQ. 
> Having a single global context would make the libraries interfere in 
> unexpected ways.

I guess I wasn't completely clear. The factory method would create a new 
instance of context. Your response implied that the factory would really be a 
singleton which would certainly limit the usefulness of using 0mq with multiple 
libraries. I'm saying that each call to ZMQ.factory (or whatever) would spin up 
a whole new instance of context instead of returning the same one over and over.

No globals. :)

cr

_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to