In CZMQ, zsocket creates zmq void * sockets. This is the old V2 API.
The new V3 API uses the zsock class which creates zsock_t items,
specific to CZMQ.

On Wed, Oct 7, 2015 at 5:56 AM, Sreekant Sreedharan <[email protected]> wrote:
> I am looking at the bstar server implementation using the C czmq code and I
> see something that is unclear to me. When a new voter is added,  the voter
> does the following:
>
>
>
>     void *socket = zsocket_new (ctx, type);
>
> ..
>
>     zmq_pollitem_t poller = { socket, 0, ZMQ_POLLIN };
>
>     return zloop_poller (loop, &poller, s_voter_ready, this);
>
>
>
> Essentially we are creating a zsocket and stuffing it ino the poll item
> structure which eventually finds its way into the poller list of the
> reactor.
>
>
>
> int
>
> zloop_poller (zloop_t *self, zmq_pollitem_t *item, zloop_fn handler, void
> *arg)
>
> {
>
>        ..
>
>     s_poller_t *poller = s_poller_new (item, handler, arg);
>
>        ..
>
>     if (poller) {
>
>         poller->list_handle = zlistx_add_end (self->pollers, poller);
>
>        ..
>
>
>
>
>
> Eventually at some later point, the reactor server starts and it builds a
> new poll set:
>
>
>
> static int
>
> s_rebuild_pollset (zloop_t *self)
>
> {
>
>       ..
>
>    self->poll_size = zlistx_size (self->readers) + zlistx_size
> (self->pollers);
>
>     self->pollset = (zmq_pollitem_t *) zmalloc (self->poll_size * sizeof
> (zmq_pollitem_t));
>
>
>
>        ..
>
>     while (poller) {
>
>         self->pollset [item_nbr] = poller->item;
>
>         self->pollact [item_nbr] = *poller;
>
>         item_nbr++;
>
>         poller = (s_poller_t *) zlistx_next (self->pollers);
>
>     }
>
>
>
> At this point the pollset has an zsocket item in it socket pointer. This is
> eventually used in the reactor loop to poll for events.
>
>
>
> int
>
> zloop_start (zloop_t *self)
>
> {
>
>
>
>        ..
>
>         rc = zmq_poll (self->pollset, (int) self->poll_size, s_tickless
> (self));
>
>
>
>
>
> But at this point my understanding is that zmq_poll should be expecting a
> 0MQ socket created by zmq_socket. How is it then that zmq_poll is aware of
> the zsocket object created in the higher level czmq library? I would have
> imagined that s_rebuild_pollset would do some sort of translation to from
> zsocket to a 0MQ socket. Where is this happening?
>
>
>
> What am I missing here?
>
>
>
>
>
> Regards,
>
> Sreekant
>
>
> Sreekant Sreedharan
> Senior Technical Consultant
>
> Phone 0471-3048888
> Alamy - http://www.alamy.com
>
> Alamy Images India Pvt. Ltd.
> C-16, Gayatri Building,
> Technopark, Thiruvananthapuram
> Kerala, India. PIN - 695 581
>
> ________________________________
> A disclaimer applies to all emails sent from Alamy.
> For the full text please see http://www.alamy.com/terms/email-disclaimer.asp
> ________________________________
>
> _______________________________________________
> 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

Reply via email to