Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 48 additions & 12 deletions up-transport-vsomeip/src/determine_message_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,31 +33,67 @@ pub fn determine_type(
// determine if we're in the uStreamer use-case of capturing all point-to-point messages
trace!("source_filter: {source_filter:?}");
trace!("sink_filter: {sink_filter:?}");

// Log each condition separately to identify which one(s) are failing
let source_wildcard_authority = !source_filter.has_wildcard_authority();
trace!("source_non_wildcard_authority: {source_wildcard_authority}");

let source_wildcard_entity_type = source_filter.has_wildcard_entity_type();
trace!("source_wildcard_entity_type: {source_wildcard_entity_type}");

let source_wildcard_entity_instance = source_filter.has_wildcard_entity_instance();
trace!("source_wildcard_entity_instance: {source_wildcard_entity_instance}");

let source_wildcard_version = source_filter.has_wildcard_version();
trace!("source_wildcard_version: {source_wildcard_version}");

let source_wildcard_resource_id = source_filter.has_wildcard_resource_id();
trace!("source_wildcard_resource_id: {source_wildcard_resource_id}");

let sink_non_wildcard_authority = !sink_filter.has_wildcard_authority();
trace!("sink_non_wildcard_authority: {sink_non_wildcard_authority}");

let sink_wildcard_entity_type = sink_filter.has_wildcard_entity_type();
trace!("sink_wildcard_entity_type: {sink_wildcard_entity_type}");

let sink_wildcard_entity_instance = sink_filter.has_wildcard_entity_instance();
trace!("sink_wildcard_entity_instance: {sink_wildcard_entity_instance}");

let sink_wildcard_version = sink_filter.has_wildcard_version();
trace!("sink_wildcard_version: {sink_wildcard_version}");

let sink_wildcard_resource_id = sink_filter.has_wildcard_resource_id();
trace!("sink_wildcard_resource_id: {sink_wildcard_resource_id}");

let streamer_use_case = {
source_filter.has_wildcard_authority()
&& source_filter.has_wildcard_entity_type()
&& source_filter.has_wildcard_entity_instance()
&& source_filter.has_wildcard_version()
&& source_filter.has_wildcard_resource_id()
&& !sink_filter.has_wildcard_authority()
&& sink_filter.has_wildcard_entity_type()
&& sink_filter.has_wildcard_entity_instance()
&& sink_filter.has_wildcard_version()
&& sink_filter.has_wildcard_resource_id()
source_wildcard_authority
&& source_wildcard_entity_type
&& source_wildcard_entity_instance
&& source_wildcard_version
&& source_wildcard_resource_id
&& sink_non_wildcard_authority
&& sink_wildcard_entity_type
&& sink_wildcard_entity_instance
&& sink_wildcard_version
&& sink_wildcard_resource_id
};
trace!("streamer_use_case final result: {streamer_use_case}");

if streamer_use_case {
trace!("Matched streamer use case - returning AllPointToPoint");
return Ok(RegistrationType::AllPointToPoint);
}

// Log which case we're falling through to
if sink_filter.resource_id == 0 {
trace!("sink_filter.resource_id == 0 - returning Response");
Ok(RegistrationType::Response)
} else {
trace!("sink_filter.resource_id != 0 - returning Request");
Ok(RegistrationType::Request)
}
} else {
trace!("No sink_filter provided - returning Publish");
Ok(RegistrationType::Publish)
}
}

// TODO: Add unit tests