Poll Functions

0th

Percentile

Poll Functions

Poll functions

Keywords
programming
Usage
zmq.poll(socket, type, timeout = -1L, MC = .pbd_env$ZMQ.MC)
zmq.poll.interrupt(socket, type, timeout = -1L, MC = .pbd_env$ZMQ.MC)
zmq.poll.free()
zmq.poll.length()
zmq.poll.get.revents(index = 1L)
Arguments
socket
a vector of ZMQ sockets
type
a vector of socket types corresponding to socket argument
timeout
timeout for poll, see ZeroMQ manual for details
MC
a message control, see ZMQ.MC() for details
index
an index of ZMQ poll items to obtain revents
Details

zmq.poll() initials ZMQ poll items given ZMQ socket's and ZMQ poll type's. Both socket and type are in vectors of the same length, while socket contains socket pointers and type contains types of poll. See ZMQ.PO() for the possible values of type. ZMQ defines several poll types and utilize them to poll multiple sockets.

zmq.poll.interrupt() call zmq.poll() and raise an interrupt signal if ret[1] == -1 and ret[2] == 4.

zmq.poll.free() frees ZMQ poll structure memory internally.

zmq.poll.length() obtains total numbers of ZMQ poll items.

zmq.poll.get.revents() obtains revent types from ZMQ poll item by the input index..

Value

zmq.poll() returns a ZMQ code and an errno, see ZeroMQ manual for details, no error/warning/interrupt in this R function, but some error/warning/interrupt may catch by the C function zmq_poll().zmq.poll.length() returns the total number of poll itemszmq.poll.get.revents() returns the revent type

References

ZeroMQ/4.1.0 API Reference: http://api.zeromq.org/4-1:_start

Programming with Big Data in R Website: http://r-pbd.org/

See Also

zmq.recv(), zmq.send().

Aliases
  • Poll Functions
  • zmq.poll
  • zmq.poll.free
  • zmq.poll.get.revents
  • zmq.poll.interrupt
  • zmq.poll.length
Examples
## Not run: 
# ### Using poll pattern.
# ### See demo/mspoller.r for details.
# 
# ### Run next in background or the other window.
# SHELL> Rscript wuserver.r &
# SHELL> Rscript taskvent.r &
# SHELL> Rscript mspoller.r
# 
# ### The mspoller.r has next.
# library(pbdZMQ, quietly = TRUE)
# 
# ### Initial.
# context <- zmq.ctx.new()
# receiver <- zmq.socket(context, .pbd_env$ZMQ.ST$PULL)
# zmq.connect(receiver, "tcp://localhost:5557")
# subscriber <- zmq.socket(context, .pbd_env$ZMQ.ST$SUB)
# zmq.connect(subscriber, "tcp://localhost:5556")
# zmq.setsockopt(subscriber, .pbd_env$ZMQ.SO$SUBSCRIBE, "20993")
# 
# ### Process messages from both sockets.
# cat("Press Ctrl+C or Esc to stop mspoller.\n")
# i.rec <- 0
# i.sub <- 0
# while(TRUE){
#   ### Set poller.
#   zmq.poll(c(receiver, subscriber),
#            c(.pbd_env$ZMQ.PO$POLLIN, .pbd_env$ZMQ.PO$POLLIN))
# 
#   ### Check receiver.
#   if(bitwAnd(zmq.poll.get.revents(1), .pbd_env$ZMQ.PO$POLLIN)){
#     ret <- zmq.recv(receiver)
#     if(ret$len != -1){
#       cat("task ventilator:", ret$buf, "at", i.rec, "\n")
#       i.rec <- i.rec + 1
#     }
#   }
# 
#   ### Check subscriber.
#   if(bitwAnd(zmq.poll.get.revents(2), .pbd_env$ZMQ.PO$POLLIN)){
#     ret <- zmq.recv(subscriber)
#     if(ret$len != -1){
#       cat("weather update:", ret$buf, "at", i.sub, "\n")
#       i.sub <- i.sub + 1
#     }
#   }
# 
#   if(i.rec >= 5 & i.sub >= 5){
#     break
#   }
# 
#   Sys.sleep(runif(1, 0.5, 1))
# }
# 
# ### Finish.
# zmq.poll.free()
# zmq.close(receiver)
# zmq.close(subscriber)
# zmq.ctx.destroy(context)
# ## End(Not run)

Documentation reproduced from package pbdZMQ, version 0.2-5, License: GPL-3

Community examples

Looks like there are no examples yet.