Route for Service Client: use the new Zenoh Querier and its matching_listener #356
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The route for a ROS Service Client (i.e. routing DDS requests to Zenoh query and the Zenoh replies back to DDS) was activated (i.e. creating DDS readers/writer reflecting a remote Service Server) only when a Liveliness Token announcing a remote Service Server is received.
This complicates the implementation of a pure Zenoh Service Server replying to a ROS Service Client, since it also has to declare an appropriate Liveliness Token (in the same way than the bridge done.
Fortunately, Zenoh 1.0.4 introduces a
Querier
that can be associated to aMatchingListener
which is triggered when at least 1 matchingQueryable
is discovered or when all matchingQueryable
are gone.This PR makes use of this to activate the Service Client route when a matching Zenoh Queryable is detected, and deactivated when all matching Queryables are gone.