That’s actually just the libzmq wrapped in the cppzmq wrapper header (not czmq). Just swap out each line for the C equivalent
On Thu, Sep 20, 2018 at 6:08 PM Carol Rice <[email protected]> wrote: > James, > > I appreciate the example. I am having to use C and not C++. Do you have > an example with the core C code? And not czmq, I am using capnproto-c with > zmq. I could not get czmq to work with it. > > Thank you for your help > > > On Wed, Sep 19, 2018 at 4:52 AM, James Harvey <[email protected] > > wrote: > >> Also keep in mind the first byte of the message will be a 0/1 to give the >> context. >> >> So something like this: >> >> zmq::message_t subscription; >> pub_sock_->recv(&subscription); >> char* data = (char*)subscription.data(); >> >> // Subscriptions should start with 0x1 and unsubscriptions 0x0 >> if(*data != 0x1) >> { >> // unsubscribe >> } >> else >> { >> // subscribe >> } >> >> std::string sub(data + 1, subscription.size() -1)); >> >> >> >> On Wed, Sep 19, 2018 at 11:13 AM Luca Boccassi <[email protected]> >> wrote: >> >>> If you call recv on an XPUB socket you'll get the subscriptions coming >>> in - no need to use XSUB, will work with SUB too >>> >>> On Tue, 2018-09-18 at 17:03 -0600, Carol Rice wrote: >>> > Thanks for the reply, Bill. >>> > >>> > I've read the zguide http://zguide.zeromq.org/page: >>> > all#The-Dynamic-Discovery-Problem >>> > and it appears this is exactly what xpub and xsub does: >>> > >>> > " We need XPUB and XSUB sockets because ZeroMQ does subscription >>> > forwarding >>> > from subscribers to publishers. XSUB and XPUB are exactly like SUB >>> > and PUB >>> > except they expose subscriptions as special messages. The proxy has >>> > to >>> > forward these subscription messages from subscriber side to publisher >>> > side, >>> > by reading them from the XPUB socket and writing them to the XSUB >>> > socket. >>> > This is the main use case for XSUB and XPUB." >>> > >>> > However, there is no example code for this is the zguide. Are there >>> > any >>> > examples in C code for using xpub/xsub for exposing subscriptions as >>> > special messages? It sounds like this is what I'm looking for, to see >>> > a >>> > list of all the subscribed topics, or subscriptions. >>> > >>> > Carol >>> > >>> > On Tue, Sep 18, 2018 at 2:19 PM, Bill Torpey <[email protected]> >>> > wrote: >>> > >>> > > Hi Carol: >>> > > >>> > > ZeroMQ actually doesn’t have the concept of “topics”, at least in >>> > > the way >>> > > that term is used with other middlewares. >>> > > >>> > > ZeroMQ does filtering on the prefix of a message, which is a bit of >>> > > a >>> > > different animal. You can use that to create a topic-based >>> > > addressing >>> > > scheme similar to other middlewares, but it’s not an intrinsic part >>> > > of >>> > > ZeroMQ. >>> > > >>> > > When a SUB socket connects to a PUB socket, the list of prefixes >>> > > that the >>> > > SUB wants to receive are sent to the PUB socket as part of the >>> > > connection >>> > > process. Then, when the PUB socket wants to send a message to a >>> > > SUB >>> > > socket, it compares the list of prefixes it maintains for the SUB >>> > > socket >>> > > against the beginning of the message. If there’s a match, the >>> > > message is >>> > > sent, otherwise it is discarded. (That list can change over time >>> > > as well, >>> > > and the SUB sends any changes to all the PUBs that it is connected >>> > > to). >>> > > >>> > > If you follow that through, you can see that to get a list of all >>> > > topics >>> > > that are being subscribed to, you’d need to ask every subscriber >>> > > and >>> > > collect the results. Publishers, on the other hand, are not >>> > > associated >>> > > with topics — the “topic” (actually filter) is associated with the >>> > > SUB >>> > > socket, although it is evaluated by the PUB socket when it has a >>> > > message to >>> > > send. (The exception is when using a pgm: transport — since pgm is >>> > > multicast, PUB sockets publish everything and it is the SUB socket >>> > > that >>> > > does the prefix matching when it receives a message). >>> > > >>> > > If you really need to know which “topics” exist on the network, you >>> > > probably want to use XPUB/XSUB sockets (which expose the filters to >>> > > the >>> > > application), and perhaps also a central ZeroMQ broker. The >>> > > http://zguide.zeromq.org/page:all#The-Dynamic-Discovery-Problem >>> > > chapter >>> > > is a good starting point for learning about how that might work. >>> > > >>> > > Hope this helps. >>> > > >>> > > Bill >>> > > >>> > > > On Sep 18, 2018, at 3:25 PM, Carol Rice <[email protected]> >>> > > > wrote: >>> > > > >>> > > > I know for pub/sub sockets, I can set the subscriber filter to an >>> > > > empty >>> > > >>> > > string and receive messages from all topics. >>> > > > >>> > > > But I want to know if there is a way I can publish all available >>> > > > topics >>> > > >>> > > and receive a list of all the available topics to subscribe to? >>> > > > >>> > > > Thank you for your help. >>> > > > _______________________________________________ >>> > > > zeromq-dev mailing list >>> > > > [email protected] >>> > > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >>> > > >>> > > _______________________________________________ >>> > > zeromq-dev mailing list >>> > > [email protected] >>> > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >>> > > >>> > >>> > _______________________________________________ >>> > zeromq-dev mailing list >>> > [email protected] >>> > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >>> >>> -- >>> Kind regards, >>> Luca Boccassi_______________________________________________ >>> zeromq-dev mailing list >>> [email protected] >>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >>> >> >> _______________________________________________ >> zeromq-dev mailing list >> [email protected] >> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> > _______________________________________________ > zeromq-dev mailing list > [email protected] > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list [email protected] https://lists.zeromq.org/mailman/listinfo/zeromq-dev
