High level functions calling zmq.sendfile() and zmq.recvfile() to zip, transfer, and unzip small files or directories contains small files.

zmq.senddir(
  port,
  infiles,
  verbose = FALSE,
  flags = ZMQ.SR()$BLOCK,
  ctx = NULL,
  socket = NULL
)

zmq.recvdir(
  port,
  endpoint,
  outfile = NULL,
  exdir = NULL,
  verbose = FALSE,
  flags = ZMQ.SR()$BLOCK,
  ctx = NULL,
  socket = NULL
)

Arguments

port

A valid tcp port to be passed to zmq.sendfile() and zmq.recvfile().

infiles

The name (as a string) vector of the in files to be zipped and to be sent away.

verbose

Logical; determines if a progress bar should be shown.

flags

A flag for the method used by zmq_sendfile and zmq_recvfile

ctx

A ZMQ ctx. If NULL (default), the function will initial one at the beginning and destroy it after finishing file transfer.

socket

A ZMQ socket based on ctx. If NULL (default), the function will create one at the beginning and close it after finishing file transfer.

endpoint

A ZMQ socket endpoint to be passed to zmq.sendfile() and zmq.recvfile().

outfile

The name (as a string) of the out file to be saved on the disk. If outfile = NULL and exdir = NULL, a tempfile will be used and the tempfile nanme will be returned.

exdir

The name (as a string) of the out directory to save the unzip files unzipped from the received outfile.

Value

zmq.senddir() and zmq.recvdir() return number of bytes (invisible) in the sent message if successful, otherwise returns -1 (invisible) and sets errno to the error value, see ZeroMQ manual for details. In addition, zmq.recvdir() returns a zipped file name in a list.

Details

zmq.senddir() calls zmq.senddir(), and zmq.recvdir() calls zmq.recvdir().

References

ZeroMQ/4.1.0 API Reference: https://libzmq.readthedocs.io/en/zeromq4-1/

Programming with Big Data in R Website: https://pbdr.org/

See also

Author

Wei-Chen Chen

Examples

if (FALSE) { # \dontrun{
### Run the sender and receiver code in separate R sessions.

### Receiver
library(pbdZMQ, quietly = TRUE)
zmq.recvdir(55555, "localhost", outfile = "./backup_2019.zip",
            verbose = TRUE)
### or unzip to exdir
# zmq.recvdir(55555, "localhost", exdir = "./backup_2019", verbose = TRUE)

### Sender
library(pbdZMQ, quietly = TRUE)
zmq.senddir(55555, c("./pbdZMQ/R", "./pbdZMQ/src"), verbose = TRUE)
} # }