MCPcopy Create free account
hub / github.com/COVESA/vsomeip / notify_one

Method notify_one

implementation/routing/src/routing_manager_impl.cpp:935–971  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

933}
934
935void routing_manager_impl::notify_one(service_t _service, instance_t _instance, event_t _event, std::shared_ptr<payload> _payload,
936 client_t _client, bool _force) {
937 std::shared_ptr<event> its_event = find_event(_service, _instance, _event);
938 if (its_event) {
939 std::set<std::shared_ptr<endpoint_definition>> its_targets;
940 const auto its_reliability = its_event->get_reliability();
941 for (const auto g : its_event->get_eventgroups()) {
942 const auto its_eventgroup = find_eventgroup(_service, _instance, g);
943 if (its_eventgroup) {
944 const auto its_subscriptions = its_eventgroup->get_remote_subscriptions();
945 for (const auto& s : its_subscriptions) {
946 if (s->has_client(_client)) {
947 if (its_reliability == reliability_type_e::RT_RELIABLE || its_reliability == reliability_type_e::RT_BOTH) {
948 const auto its_reliable = s->get_reliable();
949 if (its_reliable)
950 its_targets.insert(its_reliable);
951 }
952 if (its_reliability == reliability_type_e::RT_UNRELIABLE || its_reliability == reliability_type_e::RT_BOTH) {
953 const auto its_unreliable = s->get_unreliable();
954 if (its_unreliable)
955 its_targets.insert(its_unreliable);
956 }
957 }
958 }
959 }
960 }
961
962 if (its_targets.size() > 0) {
963 for (const auto& its_target : its_targets) {
964 its_event->set_payload(_payload, _client, its_target, _force);
965 }
966 }
967 } else {
968 VSOMEIP_WARNING << "Attempt to update the undefined event/field [" << hex4(_service) << "." << hex4(_instance) << "."
969 << hex4(_event) << "]";
970 }
971}
972
973bool routing_manager_impl::offer_service_remotely(service_t _service, instance_t _instance, std::uint16_t _port, bool _reliable,
974 bool _magic_cookies_enabled) {

Callers 1

Calls 10

hex4Function · 0.85
get_reliableMethod · 0.80
insertMethod · 0.80
get_unreliableMethod · 0.80
get_reliabilityMethod · 0.45
get_eventgroupsMethod · 0.45
has_clientMethod · 0.45
sizeMethod · 0.45
set_payloadMethod · 0.45

Tested by

no test coverage detected