-
Notifications
You must be signed in to change notification settings - Fork 69
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
add: get clients, servers info #371
base: rolling
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think in rmw service endpoints are handled as topics internally, precisely client is DataReader
and server is DataWriter
to fill in the topic endpoint information. so all the field of rmw_topic_endpoint_info_t
can be filled in with calling the graph cache.
IMO i think in rmw we can use rmw_topic_endpoint_info_t
as it is now, but i would add comment that says this structure is used for service client and server as well.
@wjwwood Mind taking a look at this new rmw API 🧇 ? |
@leeminju531 , any updates from your end? |
Signed-off-by: Minju, Lee <dlalswn531@naver.com>
Signed-off-by: Minju, Lee <dlalswn531@naver.com>
2c52767
to
3ac5f99
Compare
@methylDragon @fujitatomoya, Updated with underlying implementations first:). |
@leeminju531 thanks for putting the effort on this. i will do the another review once they are ready, so please let me know. |
Sorry for the late response 🙃 Based on ros2/ros2cli#916 (comment), we need service information from I came up with the following structure. Could you take a look and let me know your thoughts? typedef struct RMW_PUBLIC_TYPE rmw_service_endpoint_info_s
{
/// Information about an internally used topic for service communication.
/// For clients, this field contains a DataReader, while for servers, it holds a DataWriter.
/// Nullptr for systems that explicitly support services without using topics.
rmw_topic_endpoint_info_t * internal_topic_info;
/// The name of the node providing the service.
const char * node_name;
/// The namespace of the node providing the service.
const char * node_namespace;
/// The type name of the associated service.
const char * service_type;
/// A hash representing the service type's description.
/// Nullptr for systems without explicit service support.
/// This may be populated in future implementations.
rosidl_type_hash_t * service_type_hash;
/// Specifies whether the endpoint is a CLIENT or SERVER.
rmw_endpoint_type_t endpoint_type;
/// Globally unique identifier (GID) of the endpoint.
/// Initialized to zeros (0) for systems without explicit service support.
/// In future implementations, this may be used to uniquely identify the endpoint.
uint8_t endpoint_gid[RMW_GID_STORAGE_SIZE];
/// The QoS profile applied to the service's communication.
/// This is typically shared for both request and response messages
/// as they often use the same communication characteristics.
rmw_qos_profile_t qos_profile;
} rmw_service_endpoint_info_t; |
@leeminju531 glad you came back 😃 let me have some time, i will bring this up to next PMC meeting. |
@leeminju531 we had a discussion on the information from |
Add get clients, servers info
Refer to ros2/ros2cli#916