Tracing for clients tracks the initialization of the client and the lifecycle of requests sent to services.
Client Creation
Links the rcl_client_t and rmw_client_t handles to the node and the client GID.
TP(rmw_client_init, rmw_client_t *, gid)TP(rcl_client_init, rcl_client_t *, rcl_node_t *, rmw_client_t *, service_name)
Client Request/Response
Captures the sequence of sending a request and receiving a response, allowing for the correlation of request sequence numbers with their corresponding responses.
sequenceDiagram
participant node
participant Client
participant rclcpp
participant rcl
participant rmw
participant tracetools
Note over rmw: (implementation)
node->>rclcpp: create_client(service_name, options)
Note over rclcpp: (...)
rclcpp->>Client: Client(service_name, options)
Note over Client: allocates a rcl_client_t handle
Client->>rcl: rcl_client_init(out rcl_client_t *, rcl_node_t *, service_name, options)
Note over rcl: validates and processes rcl_client_t handle
rcl->>rmw: rmw_create_client(rmw_node_t *, service_name, qos_options): rmw_client_t
Note over rmw: creates rmw_client_t handle
rmw-->>tracetools: TP(rmw_client_init, rmw_client_t *, gid)
rcl-->>tracetools: TP(rcl_client_init, rcl_client_t *, rcl_node_t *, rmw_client_t *, service_name)