Learn R Programming

nanonext (version 0.5.4)

nano: Create Nano Object

Description

Create a nano object, encapsulating a Socket along with an associated Dialer/Listener.

Usage

nano(
  protocol = c("bus", "pair", "push", "pull", "pub", "sub", "req", "rep", "surveyor",
    "respondent"),
  dial = NULL,
  listen = NULL,
  autostart = TRUE
)

Value

An nano object of class 'nanoObject'.

Arguments

protocol

[default 'bus'] choose protocol - 'bus', 'pair', 'push', 'pull', 'pub', 'sub', 'req', 'rep', 'surveyor', or 'respondent' - see protocols.

dial

(optional) a URL to dial, specifying the transport and address as a character string e.g. 'inproc://anyvalue' or 'tcp://127.0.0.1:5555' (see transports).

listen

(optional) a URL to listen at, specifying the transport and address as a character string e.g. 'inproc://anyvalue' or 'tcp://127.0.0.1:5555' (see transports).

autostart

[default TRUE] whether to start the dialer/listener. Set to FALSE if you wish to set configuration options on the dialer/listener as it is not generally possible to change these once started.

Details

This function encapsulates a Socket and a single Dialer and/or Listener.

The Socket may be accessed by $socket, and the Dialer or Listener by $dialer[[1]] or $listener[[1]] respectively.

The object's methods may be accessed by $ e.g. $send() or $recv(). These methods mirror their functional equivalents, with the same arguments and defaults, apart from that the first argument of the functional equivalent is mapped to the object's encapsulated socket and does not need to be supplied.

More complex network topologies may be created by binding further dialers or listeners using the object's $dial() and $listen() methods. The new dialer/listener will be attached to the object e.g. if the object already has a dialer, then at $dialer[[2]] etc.

Note that $dialer_setopt() and $listener_setopt() methods will be available once dialers/listeners are attached to the object. These methods apply settings to all dialers or listeners equally. To apply settings to individual dialers/listeners, access them directly via $dialer[[2]] or $listener[[2]] etc.

Examples

Run this code
nano <- nano("bus", listen = "inproc://nanonext")
nano
nano$socket
nano$listener[[1]]

nano$socket_setopt("ms", "send-timeout", 1000)

nano$listen(url = "inproc://nanonextgen")
nano$listener

nano1 <- nano("bus", dial = "inproc://nanonext")
nano$send("example test", mode = "raw")
nano1$recv("character")

nano$close()
nano1$close()

Run the code above in your browser using DataLab