@@ -158,8 +158,7 @@ where {
158158 UP_CLIENT_VSOMEIP_FN_TAG_CONVERT_UMSG_TO_VSOMEIP_MSG ,
159159 app_request_id, req_id. to_hyphenated_string( ) ,
160160 ) ;
161-
162- rpc_correlation_registry. insert_ue_request_correlation ( app_request_id, req_id) ?;
161+ rpc_correlation_registry. insert_ue_request_correlation ( app_request_id, req_id, source) ?;
163162
164163 vsomeip_msg
165164 . get_message_base_pinned ( )
@@ -284,6 +283,7 @@ pub struct VsomeipMessageToUMessage;
284283impl VsomeipMessageToUMessage {
285284 pub async fn convert_vsomeip_msg_to_umsg (
286285 authority_name : & AuthorityName ,
286+ self_uuri : & UUri ,
287287 mechatronics_authority_name : & AuthorityName ,
288288 rpc_correlation_registry : Arc < dyn RpcCorrelationRegistry > ,
289289 vsomeip_message : & mut UniquePtr < MessageWrapper > ,
@@ -304,6 +304,7 @@ impl VsomeipMessageToUMessage {
304304 message_type_e:: MT_REQUEST => {
305305 Self :: convert_vsomeip_mt_request_to_umsg (
306306 authority_name,
307+ self_uuri,
307308 mechatronics_authority_name,
308309 & rpc_correlation_registry,
309310 vsomeip_message,
@@ -321,7 +322,6 @@ impl VsomeipMessageToUMessage {
321322 }
322323 message_type_e:: MT_RESPONSE => {
323324 Self :: convert_vsomeip_mt_response_to_umsg (
324- authority_name,
325325 mechatronics_authority_name,
326326 & rpc_correlation_registry,
327327 vsomeip_message,
@@ -331,7 +331,6 @@ impl VsomeipMessageToUMessage {
331331 }
332332 message_type_e:: MT_ERROR => {
333333 Self :: convert_vsomeip_mt_error_to_umsg (
334- authority_name,
335334 mechatronics_authority_name,
336335 & rpc_correlation_registry,
337336 vsomeip_message,
@@ -351,14 +350,14 @@ impl VsomeipMessageToUMessage {
351350
352351 async fn convert_vsomeip_mt_request_to_umsg (
353352 authority_name : & AuthorityName ,
353+ self_uuri : & UUri ,
354354 mechatronics_authority_name : & AuthorityName ,
355355 rpc_correlation_registry : & Arc < dyn RpcCorrelationRegistry > ,
356356 vsomeip_message : & mut UniquePtr < MessageWrapper > ,
357357 payload_bytes : Vec < u8 > ,
358358 ) -> Result < UMessage , UStatus > {
359359 let request_id = vsomeip_message. get_message_base_pinned ( ) . get_request ( ) ;
360360 let service_id = vsomeip_message. get_message_base_pinned ( ) . get_service ( ) ;
361- let client_id = vsomeip_message. get_message_base_pinned ( ) . get_client ( ) ;
362361 let method_id = vsomeip_message. get_message_base_pinned ( ) . get_method ( ) ;
363362 let interface_version = vsomeip_message
364363 . get_message_base_pinned ( )
@@ -380,9 +379,9 @@ impl VsomeipMessageToUMessage {
380379
381380 let source = UUri :: try_from_parts (
382381 mechatronics_authority_name,
383- client_id as u32 , // TODO: Need to address this by adding instance_id in MSB
384- 1 , // TODO: I don't see a way to get this
385- 0 , // set to 0 as this is the resource_id of "me"
382+ self_uuri . ue_id ,
383+ self_uuri . ue_version_major . try_into ( ) . unwrap ( ) , // we have checked this fits prior
384+ 0 , // set to 0 as this is the resource_id of "intended for me"
386385 )
387386 . map_err ( |e| {
388387 UStatus :: fail_with_code (
@@ -428,33 +427,19 @@ impl VsomeipMessageToUMessage {
428427 }
429428
430429 async fn convert_vsomeip_mt_response_to_umsg (
431- authority_name : & AuthorityName ,
432430 mechatronics_authority_name : & AuthorityName ,
433431 rpc_correlation_registry : & Arc < dyn RpcCorrelationRegistry > ,
434432 vsomeip_message : & mut UniquePtr < MessageWrapper > ,
435433 payload_bytes : Vec < u8 > ,
436434 ) -> Result < UMessage , UStatus > {
437435 let request_id = vsomeip_message. get_message_base_pinned ( ) . get_request ( ) ;
438436 let service_id = vsomeip_message. get_message_base_pinned ( ) . get_service ( ) ;
439- let client_id = vsomeip_message. get_message_base_pinned ( ) . get_client ( ) ;
440437 let method_id = vsomeip_message. get_message_base_pinned ( ) . get_method ( ) ;
441438 let interface_version = vsomeip_message
442439 . get_message_base_pinned ( )
443440 . get_interface_version ( ) ;
444441
445442 trace ! ( "MT_RESPONSE type" ) ;
446- let sink = UUri :: try_from_parts (
447- authority_name,
448- client_id as u32 , // TODO: Need to address this by adding instance_id in MSB
449- 1 , // TODO: I don't see a way to get this
450- 0 , // set to 0 as this is the resource_id of "me"
451- )
452- . map_err ( |e| {
453- UStatus :: fail_with_code (
454- UCode :: INVALID_ARGUMENT ,
455- format ! ( "Unable to build sink UUri for MT_RESPONSE type: {e:?}" ) ,
456- )
457- } ) ?;
458443
459444 let source = UUri :: try_from_parts (
460445 mechatronics_authority_name,
@@ -474,7 +459,9 @@ impl VsomeipMessageToUMessage {
474459 UP_CLIENT_VSOMEIP_FN_TAG_CONVERT_VSOMEIP_MSG_TO_UMSG ,
475460 request_id
476461 ) ;
477- let req_id = rpc_correlation_registry. remove_ue_request_correlation ( request_id) ?;
462+ let ( req_id, sink) = rpc_correlation_registry. remove_ue_request_correlation ( request_id) ?;
463+
464+ trace ! ( "source: {source:?}; sink: {sink:?}" ) ;
478465
479466 let umsg_res = UMessageBuilder :: response ( sink, req_id, source)
480467 . with_comm_status ( UCode :: OK )
@@ -494,33 +481,19 @@ impl VsomeipMessageToUMessage {
494481 }
495482
496483 async fn convert_vsomeip_mt_error_to_umsg (
497- authority_name : & AuthorityName ,
498484 mechatronics_authority_name : & AuthorityName ,
499485 rpc_correlation_registry : & Arc < dyn RpcCorrelationRegistry > ,
500486 vsomeip_message : & mut UniquePtr < MessageWrapper > ,
501487 payload_bytes : Vec < u8 > ,
502488 ) -> Result < UMessage , UStatus > {
503489 let request_id = vsomeip_message. get_message_base_pinned ( ) . get_request ( ) ;
504490 let service_id = vsomeip_message. get_message_base_pinned ( ) . get_service ( ) ;
505- let client_id = vsomeip_message. get_message_base_pinned ( ) . get_client ( ) ;
506491 let method_id = vsomeip_message. get_message_base_pinned ( ) . get_method ( ) ;
507492 let interface_version = vsomeip_message
508493 . get_message_base_pinned ( )
509494 . get_interface_version ( ) ;
510495
511496 trace ! ( "MT_ERROR type" ) ;
512- let sink = UUri :: try_from_parts (
513- authority_name,
514- client_id as u32 , // TODO: Need to address this by adding instance_id in MSB
515- 1 , // TODO: I don't see a way to get this
516- 0 , // set to 0 as this is the resource_id of "me"
517- )
518- . map_err ( |e| {
519- UStatus :: fail_with_code (
520- UCode :: INVALID_ARGUMENT ,
521- format ! ( "Unable to build sink UUri for MT_ERROR type: {e:?}" ) ,
522- )
523- } ) ?;
524497
525498 let source = UUri :: try_from_parts (
526499 mechatronics_authority_name,
@@ -540,11 +513,13 @@ impl VsomeipMessageToUMessage {
540513 UP_CLIENT_VSOMEIP_FN_TAG_CONVERT_VSOMEIP_MSG_TO_UMSG ,
541514 request_id
542515 ) ;
543- let req_id = rpc_correlation_registry. remove_ue_request_correlation ( request_id) ?;
516+ let ( req_id, sink ) = rpc_correlation_registry. remove_ue_request_correlation ( request_id) ?;
544517 let comm_status = Self :: vsomeip_err_code_to_ucode (
545518 vsomeip_message. get_message_base_pinned ( ) . get_return_code ( ) ,
546519 ) ;
547520
521+ trace ! ( "source: {source:?}; sink: {sink:?}" ) ;
522+
548523 let umsg_res = UMessageBuilder :: response ( sink, req_id, source)
549524 . with_comm_status ( comm_status)
550525 . build_with_payload ( payload_bytes, UPayloadFormat :: UPAYLOAD_FORMAT_UNSPECIFIED ) ;
0 commit comments