Learn R Programming

nanonext (version 0.9.2)

pipe_notify: Pipe Notify

Description

Signals a 'conditionVariable' whenever pipes (individual connections) are added or removed at a socket.

Usage

pipe_notify(socket, cv, cv2 = NULL, add = TRUE, remove = TRUE, flag = TRUE)

Value

Invisibly, zero on success (will otherwise error).

Arguments

socket

a Socket.

cv

a 'conditionVariable' to signal.

cv2

[default NULL] optionally, if specified, a second 'conditionVariable' to signal. Note that this cv is signalled sequentially after the first condition variable.

add

[default TRUE] logical value whether to signal when a pipe is added.

remove

[default TRUE] logical value whether to signal when a pipe is removed.

flag

[default TRUE] logical value whether to also set a flag in the 'conditionVariable'. This can help distinguish between different types of signal, and causes any subsequent wait or until to return FALSE instead of TRUE.

Details

For add: this event occurs after the pipe is fully added to the socket. Prior to this time, it is not possible to communicate over the pipe with the socket.

For remove: this event occurs after the pipe has been removed from the socket. The underlying transport may be closed at this point, and it is not possible to communicate using this pipe.

Examples

Run this code
s <- socket(listen = "inproc://nanopipe")
cv <- cv()
cv2 <- cv()

pipe_notify(s, cv, cv2, add = TRUE, remove = TRUE, flag = TRUE)
cv_value(cv)
cv_value(cv2)

s1 <- socket(dial = "inproc://nanopipe")
cv_value(cv)
cv_value(cv2)
close(s1)
cv_value(cv)
cv_value(cv2)

(wait(cv))
(wait(cv2))

close(s)

Run the code above in your browser using DataLab