Also, time is always set to 0 for the setsockopt ZMQ_LINGER call, which would cause immediate shutdown of the socket. This is not related to timeout, which is used as the polling timeout.
On Mon, Aug 10, 2020 at 7:06 PM Jeff Long <willco...@gmail.com> wrote: > At socket shutdown, LINGER determines how long close(2) or shutdown(2) > will block waiting for queue messages to be sent. See man socket(7). > > On Mon, Aug 10, 2020 at 7:00 PM Cameron Matson <ncmatso...@gmail.com> > wrote: > >> Hi all, >> >> Can someone help me understand what's going on with any of the ZMQ >> Message Sink blocks? The block takes a timeout parameter which is assigned >> to d_timeout, but ultimately it looks like the zmq.LINGER option (which I >> believe is how long zmq will block before dropping the frame) is always set >> to a different variable, time, which is initialized in the constructor to >> be 0 that is used for the setsockopt call. >> >> if (major < 3) { >> d_timeout = timeout * 1000; >> } >> d_context = new zmq::context_t(1); >> d_socket = new zmq::socket_t(*d_context, ZMQ_REP); >> int time = 0; >> d_socket->setsockopt(ZMQ_LINGER, &time, sizeof(time)); >> Am I missing something? >> >> Thanks, >> Cameron >> >>