[zeromq-dev] malamute with zloop reactor
Miao Lin
miaolin71 at gmail.com
Fri Aug 14 07:44:18 CEST 2015
Please omit this message, this issue solved after I download and compile
latest malamute server.
2015-08-13 17:48 GMT+08:00 Miao Lin <miaolin71 at gmail.com>:
> Hi:
>
> I am using malamute client with zloop reactor. my program always stop
> receive message after working good for a while.
>
> I checked the verbose out of zloop, seems data consumed too slow. in my
> zloop callback function, I only receive one zmsg_t per callback ,does this
> correct?
>
> If no, how to know if there still have message can be read so I can
> call mlm_client_recv() many times without block the callback?
>
>
> Best
> Miao
>
>
> here is the code:
>
>
> static int s_consumer_event(zloop_t *loop, zsock_t *handle, void *arg)
> {
> zmsg_t* m = mlm_client_recv(consumer);
> if (NULL == m) {
> zsys_info("Invalid NULL zmsg");
> return -1;
> }
>
> while (1){
> zframe_t* f = zmsg_pop(m);
> if (f){
> ...do some works here....
> zframe_destroy(&f);
> }
> else
> break;
> }
>
> zmsg_destroy(&m);
>
> return 0;
>
> }
>
>
>
> main(){
> ....
> rc = mlm_client_set_consumer(consumer, dahdi_mlm_event_stream, ".");
> assert(rc >= 0);
>
> // create zloop
> zloop_t* loop = zloop_new()
> assert(loop);
>
> // add consumer to loop
> rc = zloop_reader(loop, mlm_client_msgpipe(consumer), s_consumer_event,
> NULL);
> assert(rc == 0);
>
> // add a timer;
> timer_id = zloop_timer(loop, 1000, 0, s_timer_event, NULL);
> assert(timer_id != -1);
>
> puts(PRODUCT);
> puts(COPYRIGHT);
>
> // handle messages
> zloop_start(loop);
> ....
> }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20150814/9aa1ed20/attachment.htm>
More information about the zeromq-dev
mailing list