Node descriptor - eclipse-zenoh-flow/zenoh-flow GitHub Wiki

Table of Contents


Node descriptors tell Zenoh-Flow how a node can be connected and where its actual implementation can be found. The descriptors detail the following information:

  • (optional) a name --- this field will be used for display purposes when Zenoh-Flow will provide a registry,
  • (optional) some vars,
  • (optional) some configuration,
  • its inputs --- only for an Operator and a Sink,
  • its outputs --- only for a Source and an Operator,
  • the URI to a library --- where the implementation of the node can be found.

Below is the descriptor of an Operator that we will use to explain each section. The only difference with Source and Sink descriptors is the lack of inputs/outputs: a Source only has outputs while a Sink only has inputs.

name: my-operator

# (optional)
vars:
  BASE_PATH: file:///home/zenoh-flow/my-first-flow/nodes
  DLL_EXTENSION: so
  
# (optional)
configuration:
  default_timeout: 10
    
library: "{{ BASE_PATH }}/target/release/libmy_operator.{{ DLL_EXTENSION }}"
  
# Only OPERATOR and SINK
inputs:
  - in
  - tick
    
# Only OPERATOR and SOURCE
outputs:
  - out
  - tick

(optional) Vars

This section is used to tell Zenoh-Flow how to do string replacements in this descriptor. More details can be found here.

(optional) Configuration

This section allows passing a dictionary of key-value pairs to this node. This can be useful, for instance, to run several times the same node but with slightly different parameters or to modify its behaviour without having to recompile it.

More details can be found here.

Library

This specifies where to find, on the device where the daemon is running, the implementation of the node being described.

The scheme, file:// in this example, must be added. For now, Zenoh-Flow only supports file:// but we plan on supporting additional schemes with the introduction of the registry in an upcoming release.

Inputs and Outputs

Inputs and Outputs are specified as a list of identifiers.

Identifiers must be unique per "category": Zenoh-Flow will refuse a descriptor where two inputs (resp. outputs), for the same Node, share the same identifier. An input and an Output can however share the same identifier.