rsb send [OPTIONS] EVENT-SPEC [DESTINATION-URI]
Send an event constructed according to EVENT-SPEC to listeners on scopes specified by DESTINATION-URI.
EVENT-SPEC is treated as follows:
Note
When written as part of a shell command, some of the above forms may require protection from processing by the shell, usually by surrounding the form in single quotes (‘). For example:
$ rsb send '' ... # empty payload
$ rsb send '#P"my-file"' ... # read payload from my-file
DESTINATION-URI designates the destination scope to which the events should be sent and the transport configuration which should be used for sending the event.
See also
Set the method field of the event being sent to METHOD. Default behavior is sending an event without method field.
Set the meta-data item NAME to VALUE in the event being sent. This option can be specified multiple times for distinct NAME s.
Set the timestamp named NAME to VALUE in the event being sent. This option can be specified multiple times for distinct NAME s.
Add the event id specified by PARTICIPANT-ID:SEQUENCE-NUMBER to the cause vector of the event being sent. This option can be specified multiple times.
$ rsb send '' 'spread:/mycomponent/state'
Send an event without a payload to the channel designated by the scope /mycomponent/trigger.
Note
Note the use of single quotes (') to allow specifying an empty payload.
$ rsb send '"running"' 'spread:/mycomponent/state'
Send an event whose payload is the string running to the channel designated by the scope /mycomponent/state.
Note
Note the use of single quotes (') to prevent the shell from processing the double quotes (") that identify the payload as a string.
$ rsb send 5 'spread:/somescope?name=4803'
Send an integer. Use Spread transport, like in the previous example, but use the “daemon name” option of the Spread transport instead of specifying host and port.
Note
Note the use of single quotes (') to prevent elements of the destination URI from being processed by the shell (not necessary for all shells).
$ cat my-data.txt | rsb send - 'socket:/printer'
$ cat my-data.txt | rsb send -:binary 'socket:/printer'
$ rsb send '#P"my-data.txt"' 'socket:/printer'
$ rsb send '#P"my-data.txt":latin-1' 'socket:/printer'
$ rsb send '#P"my-data.txt":binary' 'socket:/printer'
Two ways of sending the content of the file my-data.txt to the scope /printer using the socket transport (with its default configuration). This form can only be used for sending string payloads.
Note
Note the use of single quotes (') to prevent elements of the pathname #"Pmy-data.txt" from being processed by the shell.
$ rsb send \
-I…/rst-proto/proto/stable/ \
-l…/rst-proto/proto/stable/rst/robot/RobotCollision.proto \
'pb:.rst.robot.RobotCollision:{kind: "SELF" collision_detail: { geometry: { contact_points: [ { x: 0 y: 1 z: 2 frame_id: "foo" }, { x: 3 y: 4 z: 5 } ] } object_1: "o1" } }' \
socket:/collisions
In the above example, the send tool is used to send a protocol buffer message to scope /collisions. The protocol buffer message is of type rst.robot.RobotCollision with kind enum field set to SELF and an embedded rst.kinematics.ObjectCollision message with two contact points in the collision_detail field.
The specification of the message content uses the syntax produced/consumed by the various TextFormat classes of the protocol buffer API and the --decode/--encode options of the protoc binary.
Note
Note how the definition of the protocol buffer message type is loaded using -I (--idl-path) and -l (--load-idl) commandline options.
Implementation Language | Project | Repository Link |
---|---|---|
Common Lisp | rsb-tools-cl | “0.12” branch of https://code.cor-lab.org/git/rsb.git.tools-cl |