Subscriptions
Subscriptions are an extension of the node auto-discovery that automatically forms connections to detected nodes. A
subscription is created using the SubscribeServiceByType
function in RobotRaconteurNode
. This function takes two
arguments: a list of service types, and an optional ServiceSubscriptionFilter
. The returned object is a
ServiceSubscription
, which can be used to retrieve the connected services. The GetConnectedClients
function
returns a dict
of all the connected clients. The key contains the “NodeID” and service name of the connection. The
value is the connected client object reference, which can be used directly. The ClientConnected
and
ClientDisconnected
events in ServiceSubscription
can be used to detect when clients are connected or the
connection is lost.
Wires and Pipes can be subscribed once a ServiceSubscription
is created. The SubscribeWire
function takes the
name of the member and returns a WireSubscription
that can be used to interact with all connected wires. The
InValue
property will return the “most recent” value received from all wires. The OutValue
property will set all
wires to the specified value. For pipes, the SubscripePipe
is used, and retuns a PipeSubscription
. This function
can receive packets using the ReceivePacket
or TryReceivePacket
functions. The received packets are not sorted
and all received packets are retrieved in the order they arrived. The SendPacket
function can be used to send
packets to all connected services. Note that currently the Wire and Pipe subscriptions can only be made to the root
object. Wires and Pipes for objects retrieved using ObjRefs cannot be used.
Authentication information can be sent as part of ServiceSubscriptionFilter
.
The discovery information can be subscribed without creating connections to clients using the SubscribeServiceInfo2
function in RobotRaconteurNode
. This is essentially a constantly running version of FindServiceByType
.