@@ -70,26 +70,31 @@ void on_topic(
7070 if ((custom_subscription -> datareader_id .id == object_id .id ) &&
7171 (custom_subscription -> datareader_id .type == object_id .type ))
7272 {
73- rmw_uxrce_mempool_item_t * memory_node = get_memory (& static_buffer_memory );
73+ rmw_uxrce_mempool_item_t * memory_node = rmw_uxrce_get_static_input_buffer_for_entity (
74+ custom_subscription , custom_subscription -> qos );
7475 if (!memory_node ) {
7576 RMW_SET_ERROR_MSG ("Not available static buffer memory node" );
7677 return ;
7778 }
7879
7980 rmw_uxrce_static_input_buffer_t * static_buffer =
8081 (rmw_uxrce_static_input_buffer_t * )memory_node -> data ;
81- static_buffer -> owner = (void * ) custom_subscription ;
82- static_buffer -> length = length ;
8382
8483 if (!ucdr_deserialize_array_uint8_t (
8584 ub ,
8685 static_buffer -> buffer ,
8786 length ))
8887 {
8988 put_memory (& static_buffer_memory , memory_node );
89+ return ;
9090 }
9191
92- break ;
92+ static_buffer -> owner = (void * ) custom_subscription ;
93+ static_buffer -> length = length ;
94+ static_buffer -> timestamp = rmw_uros_epoch_nanos ();
95+ static_buffer -> entity_type = RMW_UXRCE_ENTITY_TYPE_SUBSCRIPTION ;
96+
97+ return ;
9398 }
9499 subscription_item = subscription_item -> next ;
95100 }
@@ -114,27 +119,32 @@ void on_request(
114119 // Check if request is related to the service
115120 rmw_uxrce_service_t * custom_service = (rmw_uxrce_service_t * )service_item -> data ;
116121 if (custom_service -> service_data_resquest == request_id ) {
117- rmw_uxrce_mempool_item_t * memory_node = get_memory (& static_buffer_memory );
122+ rmw_uxrce_mempool_item_t * memory_node = rmw_uxrce_get_static_input_buffer_for_entity (
123+ custom_service , custom_service -> qos );
118124 if (!memory_node ) {
119125 RMW_SET_ERROR_MSG ("Not available static buffer memory node" );
120126 return ;
121127 }
122128
123129 rmw_uxrce_static_input_buffer_t * static_buffer =
124130 (rmw_uxrce_static_input_buffer_t * )memory_node -> data ;
125- static_buffer -> owner = (void * ) custom_service ;
126- static_buffer -> length = length ;
127- static_buffer -> related .sample_id = * sample_id ;
128131
129132 if (!ucdr_deserialize_array_uint8_t (
130133 ub ,
131134 static_buffer -> buffer ,
132135 length ))
133136 {
134137 put_memory (& static_buffer_memory , memory_node );
138+ return ;
135139 }
136140
137- break ;
141+ static_buffer -> owner = (void * ) custom_service ;
142+ static_buffer -> length = length ;
143+ static_buffer -> related .sample_id = * sample_id ;
144+ static_buffer -> timestamp = rmw_uros_epoch_nanos ();
145+ static_buffer -> entity_type = RMW_UXRCE_ENTITY_TYPE_SERVICE ;
146+
147+ return ;
138148 }
139149 service_item = service_item -> next ;
140150 }
@@ -159,27 +169,32 @@ void on_reply(
159169 // Check if reply is related to the client
160170 rmw_uxrce_client_t * custom_client = (rmw_uxrce_client_t * )client_item -> data ;
161171 if (custom_client -> client_data_request == request_id ) {
162- rmw_uxrce_mempool_item_t * memory_node = get_memory (& static_buffer_memory );
172+ rmw_uxrce_mempool_item_t * memory_node = rmw_uxrce_get_static_input_buffer_for_entity (
173+ custom_client , custom_client -> qos );
163174 if (!memory_node ) {
164175 RMW_SET_ERROR_MSG ("Not available static buffer memory node" );
165176 return ;
166177 }
167178
168179 rmw_uxrce_static_input_buffer_t * static_buffer =
169180 (rmw_uxrce_static_input_buffer_t * )memory_node -> data ;
170- static_buffer -> owner = (void * ) custom_client ;
171- static_buffer -> length = length ;
172- static_buffer -> related .reply_id = reply_id ;
173181
174182 if (!ucdr_deserialize_array_uint8_t (
175183 ub ,
176184 static_buffer -> buffer ,
177185 length ))
178186 {
179187 put_memory (& static_buffer_memory , memory_node );
188+ return ;
180189 }
181190
182- break ;
191+ static_buffer -> owner = (void * ) custom_client ;
192+ static_buffer -> length = length ;
193+ static_buffer -> related .reply_id = reply_id ;
194+ static_buffer -> timestamp = rmw_uros_epoch_nanos ();
195+ static_buffer -> entity_type = RMW_UXRCE_ENTITY_TYPE_CLIENT ;
196+
197+ return ;
183198 }
184199 client_item = client_item -> next ;
185200 }
0 commit comments