Thanks for the reply!
But how can I listen to both sockets, pipe and subscriber?
Are there any examples how to do that?
On 2017-09-29 22:14, Luca Boccassi wrote:
On Fri, 2017-09-29 at 11:38 +0200, Bachmair Florian - flexSolution GmbH
wrote:
Hi!
When I stop my application in roughly 1 out of 20 tries I get this
error:
Assertion failed: pfd.revents & POLLIN (src/signaler.cpp:243) (here
is
the corresponding line of code:
https://github.com/zeromq/libzmq/blob/v4.2.0/src/signaler.cpp#L243 )
Stack trace of thread 8576:
#0 0x00007f56d22a78a0 raise (libc.so.6)
#1 0x00007f56d22a8f09 abort (libc.so.6)
#2 0x00007f5686c7cc99 n/a
(/home/flex/core-1.5.0-SNAPSHOT/lib/native/libzmq.so.5)
#3 0x00007f56d26255a0 _IO_2_1_stderr_ (libc.so.6)
Before I stop my application I disconnect from ALL publishers with
zsock_disconnect(subscriber, "tcp://%s:%d", c_ip, port);
after that I destroy my sockets and actors
zsock_destroy(&publisher);
zsock_destroy(&req);
zsock_destroy(&subscriber);
//this is never finished
zactor_destroy(&actorRep);
zactor_destroy(&actorSub);
I guess its a problem with stopping the actors, how do I propperly
stop
this actor?
void sub_actor(zsock_t *pipe, void *args) {
zsock_signal(pipe, 0);
while (!zsys_interrupted) {
char* topic;
char* timestamp;
char* value;
char* id;
zsock_recv(subscriber, "ssss", &topic, ×tamp, &id,
&value);
onMessageReceived(topic, timestamp, id,value);
}
}
Thanks Florian
As the docs say, the zactor function must listen for $TERM on the pipe
zsock_t:
http://czmq.zeromq.org/czmq4-0:zactor
https://github.com/zeromq/czmq#czmq-actors
zactor_destroy() from the parent will, under the hood, send the $TERM
message and wait for the zactor to correctly close.
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev