Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support services #10

Closed
jacobperron opened this issue Mar 17, 2021 · 2 comments
Closed

Support services #10

jacobperron opened this issue Mar 17, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@jacobperron
Copy link
Member

Currently, the domain bridge only supports topics, but it would be great to support services as well.

Analogous to how topics are bridged by creating a subscription/publisher pair, services could be bridged by creating a service/client pair that forwards calls from clients in one domain to services in another domain. For example, a service /add_two_ints could be bridged from domain ID 1 to domain ID 2 by

  1. Waiting for a /add_two_ints service to be offered in domain ID 2
  2. When the service is ready, create an equivalent a service in the bridge, but on domain ID 1
  3. Also create a service client for domain ID 2
  4. Whenever a request comes in on domain ID 1, forward it to domain ID 2 using the bridges service client
  5. When a response comes back on domain ID 2, forward it to domain ID 1.

This requires the service and client created by the bridge to communicate within the same process (e.g. using a shared resource).

I don't think we should be concerned with supporting multiple services by the same name, since that isn't well supported in ROS itself.

One critical blocker for this feature may be type support. Unlike topic messages, services do not have equivalent APIs readily available for working with serialized data. This means we may find it difficult to forward requests/responses without knowing the service types at compile time.

@jacobperron jacobperron added the enhancement New feature or request label Mar 17, 2021
@ivanpauno
Copy link
Member

#26 added support for this.

The only thing yet not supported is to configure the bridge dynamically from a yaml file, like we can do for topics.
For bridging services currently a custom executable setting the bridge correctly is needed.

@jacobperron
Copy link
Member Author

The only thing yet not supported is to configure the bridge dynamically from a yaml file, like we can do for topics.

I've created a separate ticket for this: #54

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants