| 2921 | } |
| 2922 | |
| 2923 | bool routing_manager_client::insert_subscription(service_t _service, instance_t _instance, eventgroup_t _eventgroup, event_t _event, |
| 2924 | const std::shared_ptr<debounce_filter_impl_t>& _filter, client_t _client, |
| 2925 | std::scoped_lock<std::mutex> const& _lock) { |
| 2926 | |
| 2927 | bool is_inserted(false); |
| 2928 | if (_event != ANY_EVENT) { // subscribe to specific event |
| 2929 | std::shared_ptr<event> its_event = find_provided_event(_service, _instance, _event, _lock); |
| 2930 | if (its_event) { |
| 2931 | is_inserted = its_event->add_subscriber(_eventgroup, _filter, _client, host_->is_routing()); |
| 2932 | } else { |
| 2933 | VSOMEIP_WARNING_P << "(" << hex4(_client) << "): [" << hex4(_service) << "." << hex4(_instance) << "." << hex4(_eventgroup) |
| 2934 | << "." << hex4(_event) << "] received subscription for unknown (unrequested /unoffered) event. Creating" |
| 2935 | << " placeholder event holding subscription until event is requested/offered."; |
| 2936 | is_inserted = create_placeholder_event_and_subscribe(_service, _instance, _eventgroup, _event, _filter, _client, _lock); |
| 2937 | } |
| 2938 | } else { // subscribe to all events of the eventgroup |
| 2939 | auto its_eventgroup = find_eventgroup(provided_eventgroups_, _service, _instance, _eventgroup, _lock); |
| 2940 | bool create_place_holder(false); |
| 2941 | if (its_eventgroup) { |
| 2942 | std::set<std::shared_ptr<event>> its_events = its_eventgroup->get_events(); |
| 2943 | if (!its_events.size()) { |
| 2944 | create_place_holder = true; |
| 2945 | } else { |
| 2946 | for (const auto& e : its_events) { |
| 2947 | is_inserted = e->add_subscriber(_eventgroup, _filter, _client, host_->is_routing()) || is_inserted; |
| 2948 | } |
| 2949 | } |
| 2950 | } else { |
| 2951 | create_place_holder = true; |
| 2952 | } |
| 2953 | if (create_place_holder) { |
| 2954 | VSOMEIP_WARNING_P << ":(" << hex4(_client) << "): [" << hex4(_service) << "." << hex4(_instance) << "." << hex4(_eventgroup) |
| 2955 | << "." << hex4(_event) << "] received subscription for unknown (unrequested /unoffered) eventgroup. Creating" |
| 2956 | << " placeholder event holding subscription until event is requested/offered."; |
| 2957 | is_inserted = create_placeholder_event_and_subscribe(_service, _instance, _eventgroup, _event, _filter, _client, _lock); |
| 2958 | } |
| 2959 | } |
| 2960 | return is_inserted; |
| 2961 | } |
| 2962 | |
| 2963 | std::set<std::tuple<service_t, instance_t, eventgroup_t>> |
| 2964 | routing_manager_client::get_subscriptions(const client_t _client, |
nothing calls this directly
no test coverage detected