Thanks Pieter. I will try with 3.0.0 or github master. Regards
2015-03-18 13:20 GMT+00:00 Pieter Hintjens <[email protected]>: > The code for that method, in 2.2.0, looks very suspect. My advice is > to use the 3.0.0 release or github master. > > On Wed, Mar 18, 2015 at 2:06 PM, Arturo S. Garcia <[email protected]> > wrote: > > Hi All, > > > > I am using czmq-2.2.0, zeromq-4.0.5 and libsodium-1.0.2. > > > > I am tying to send a message using a publisher node and receive it using > > zmsg_recv_nowait. The thing is that I do not know if I am doing something > > wrong... Here is the code: > > > > Publiser: > > > > std::string data ("test"); > > zmsg_t *mess = zmsg_new(); > > zmsg_addmem(mess, data.c_str(), data.size()); > > zmsg_send (&mess, _pub); > > > > Subscriber: > > > > zmsg_t *message2 = zmsg_recv_nowait (_subs); > > if (message2) > > { > > zframe_t *content = zmsg_pop (message2); > > // get message > > char* char_msg = zframe_strdup(content); > > data = std::string(char_msg,zframe_size(content)); > > printf("Response: '%s'\n", data.c_str()); > > } > > > > The problem is that I never receive a message in the subscriber. If I > change > > to zmsg_recv, then I am able to receive them. Is it possible that > > zmsg_recv_nowait is not working properly? or I am using it in a wrong > way? > > Moreover, changing from zmsg_recv_nowait to zstr_recv_nowait also works > > fine... > > > > I have modified the code of zmsg_recv_nowait in zmsg.c when the last > message > > frame is received by including frames++ because I noticed that the > message > > was actually received, but discarded becasue the frame counter is not > > increased. Is this a mistake or this function was intended to be used > with > > more than one frame only? > > > > Here is the modified zmsg_recv_nowait: > > zmsg_t * > > zmsg_recv_nowait (void *zocket) > > { > > assert (zocket); > > int frames = 0; > > zmsg_t *self = zmsg_new (); > > if (!self) > > return NULL; > > > > while (true) { > > zframe_t *frame = zframe_recv_nowait (zocket); > > if (!frame) { > > zmsg_destroy (&self); > > break; // Interrupted or terminated > > } > > if (zmsg_append (self, &frame)) { > > zmsg_destroy (&self); > > break; > > } > > if (!zsocket_rcvmore (zocket)) > > { > > frames++; > > break; // Last message frame > > } > > frames++; > > } > > return frames > 0 ? self : NULL; > > } > > > > Any ideas? Thanks in advance. > > > > Regards, > > Arturo > > > > _______________________________________________ > > zeromq-dev mailing list > > [email protected] > > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > > > _______________________________________________ > zeromq-dev mailing list > [email protected] > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
