GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  ZPOLLER (3)

.ds Aq ’

NAME

zpoller - trivial socket poller class

CONTENTS

SYNOPSIS

//  Create new poller; the reader can be a libzmq socket (void *), a zsock_t
//  instance, or a zactor_t instance.
CZMQ_EXPORT zpoller_t *
    zpoller_new (void *reader, ...);

// Destroy a poller CZMQ_EXPORT void zpoller_destroy (zpoller_t **self_p);

// Add a reader to be polled. Returns 0 if OK, -1 on failure. The reader may // be a libzmq void * socket, a zsock_t instance, or a zactor_t instance. CZMQ_EXPORT int zpoller_add (zpoller_t *self, void *reader);

// Remove a reader from the poller; returns 0 if OK, -1 on failure. The // reader may be a libzmq void * socket, a zsock_t instance, or a zactor_t // instance. CZMQ_EXPORT int zpoller_remove (zpoller_t *self, void *reader);

// Poll the registered readers for I/O, return first reader that has input. // The reader will be a libzmq void * socket, or a zsock_t or zactor_t // instance as specified in zpoller_new/zpoller_add. The timeout should be // zero or greater, or -1 to wait indefinitely. Socket priority is defined // by their order in the poll list. If you need a balanced poll, use the low // level zmq_poll method directly. If the poll call was interrupted (SIGINT), // or the ZMQ context was destroyed, or the timeout expired, returns NULL. // You can test the actual exit condition by calling zpoller_expired () and // zpoller_terminated (). The timeout is in msec. CZMQ_EXPORT void * zpoller_wait (zpoller_t *self, int timeout);

// Return true if the last zpoller_wait () call ended because the timeout // expired, without any error. CZMQ_EXPORT bool zpoller_expired (zpoller_t *self);

// Return true if the last zpoller_wait () call ended because the process // was interrupted, or the parent context was destroyed. CZMQ_EXPORT bool zpoller_terminated (zpoller_t *self);

// Ignore zsys_interrupted flag in this poller. By default, a zpoller_wait will // return immediately if detects zsys_interrupted is set to something other than // zero. Calling zpoller_ignore_interrupts will supress this behavior.

CZMQ_EXPORT void zpoller_ignore_interrupts(zpoller_t *self);

// Self test of this class CZMQ_EXPORT void zpoller_test (bool verbose);

DESCRIPTION

The zpoller class provides a minimalist interface to ZeroMQ\(cqs zmq_poll API, for the very common case of reading from a number of sockets. It does not provide polling for output, nor polling on file handles. If you need either of these, use the zmq_poll API directly.

Please add @discuss section in ../src/zpoller.c.

EXAMPLE

From zpoller_test method.

//  Create a few sockets
zsock_t *vent = zsock_new (ZMQ_PUSH);
assert (vent);
int port_nbr = zsock_bind (vent, "tcp://127.0.0.1:*");
assert (port_nbr != -1);
zsock_t *sink = zsock_new (ZMQ_PULL);
assert (sink);
int rc = zsock_connect (sink, "tcp://127.0.0.1:%d", port_nbr);
assert (rc != -1);
zsock_t *bowl = zsock_new (ZMQ_PULL);
assert (bowl);
zsock_t *dish = zsock_new (ZMQ_PULL);
assert (dish);

// Set-up poller zpoller_t *poller = zpoller_new (bowl, dish, NULL); assert (poller);

// Add a reader to the existing poller rc = zpoller_add (poller, sink); assert (rc == 0);

zstr_send (vent, "Hello, World");

// We expect a message only on the sink zsock_t *which = (zsock_t *) zpoller_wait (poller, -1); assert (which == sink); assert (zpoller_expired (poller) == false); assert (zpoller_terminated (poller) == false); char *message = zstr_recv (which); assert (streq (message, "Hello, World")); zstr_free (&message);

// Stop polling reader rc = zpoller_remove (poller, sink); assert (rc == 0);

// Check we can poll an FD rc = zsock_connect (bowl, "tcp://127.0.0.1:%d", port_nbr); assert (rc != -1); SOCKET fd = zsock_fd (bowl); rc = zpoller_add (poller, (void *) &fd); assert (rc != -1); zstr_send (vent, "Hello again, world"); assert (zpoller_wait (poller, 500) == &fd);

// Check whether poller properly ignores zsys_interrupted flag // when asked to zsys_interrupted = 1; zpoller_wait (poller, 0); assert (zpoller_terminated (poller)); zpoller_ignore_interrupts (poller); zpoller_wait (poller, 0); assert (!zpoller_terminated (poller)); zsys_interrupted = 0;

// Destroy poller and sockets zpoller_destroy (&poller);

zsock_destroy (&vent); zsock_destroy (&sink); zsock_destroy (&bowl); zsock_destroy (&dish);

AUTHORS

The czmq manual was written by the authors in the AUTHORS file.

RESOURCES

Main web site: \m[blue] \m[]

Report bugs to the email <\m[blue]zeromq-dev@lists.zeromq.org\m[][1]>

COPYRIGHT

Copyright (c) 1991-2012 iMatix Corporation -- http://www.imatix.com Copyright other contributors as noted in the AUTHORS file. This file is part of CZMQ, the high-level C binding for 0MQ: http://czmq.zeromq.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. LICENSE included with the czmq distribution.

NOTES

1. zeromq-dev@lists.zeromq.org  mailto:zeromq-dev@lists.zeromq.org
Search for    or go to Top of page |  Section 3 |  Main Index


CZMQ 3&.0&.1 ZPOLLER (3) 06/01/2015

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.