| 4289 | } |
| 4290 | |
| 4291 | bool routing_manager_impl::insert_subscription(service_t _service, instance_t _instance, eventgroup_t _eventgroup, event_t _event, |
| 4292 | const std::shared_ptr<debounce_filter_impl_t>& _filter, client_t _client, |
| 4293 | std::scoped_lock<std::mutex> const& _lck) { |
| 4294 | |
| 4295 | bool is_inserted(false); |
| 4296 | if (_event != ANY_EVENT) { // subscribe to specific event |
| 4297 | std::shared_ptr<event> its_event = find_event(_service, _instance, _event); |
| 4298 | if (its_event) { |
| 4299 | is_inserted = its_event->add_subscriber(_eventgroup, _filter, _client, host_->is_routing()); |
| 4300 | } else { |
| 4301 | VSOMEIP_WARNING_P << "(" << hex4(_client) << "): [" << hex4(_service) << "." << hex4(_instance) << "." << hex4(_eventgroup) |
| 4302 | << "." << hex4(_event) << "] received subscription for unknown (unrequested /unoffered) event. Creating" |
| 4303 | << " placeholder event holding subscription until event is requested/offered."; |
| 4304 | is_inserted = create_placeholder_event_and_subscribe(_service, _instance, _eventgroup, _event, _filter, _client, _lck); |
| 4305 | } |
| 4306 | } else { // subscribe to all events of the eventgroup |
| 4307 | std::shared_ptr<eventgroupinfo> its_eventgroup = find_eventgroup(_service, _instance, _eventgroup); |
| 4308 | bool create_place_holder(false); |
| 4309 | if (its_eventgroup) { |
| 4310 | std::set<std::shared_ptr<event>> its_events = its_eventgroup->get_events(); |
| 4311 | if (!its_events.size()) { |
| 4312 | create_place_holder = true; |
| 4313 | } else { |
| 4314 | for (const auto& e : its_events) { |
| 4315 | is_inserted = e->add_subscriber(_eventgroup, _filter, _client, host_->is_routing()) || is_inserted; |
| 4316 | } |
| 4317 | } |
| 4318 | } else { |
| 4319 | create_place_holder = true; |
| 4320 | } |
| 4321 | if (create_place_holder) { |
| 4322 | VSOMEIP_WARNING_P << ":(" << hex4(_client) << "): [" << hex4(_service) << "." << hex4(_instance) << "." << hex4(_eventgroup) |
| 4323 | << "." << hex4(_event) << "] received subscription for unknown (unrequested /unoffered) eventgroup. Creating" |
| 4324 | << " placeholder event holding subscription until event is requested/offered."; |
| 4325 | is_inserted = create_placeholder_event_and_subscribe(_service, _instance, _eventgroup, _event, _filter, _client, _lck); |
| 4326 | } |
| 4327 | } |
| 4328 | return is_inserted; |
| 4329 | } |
| 4330 | |
| 4331 | void routing_manager_impl::clear_shadow_subscriptions(void) { |
| 4332 | std::scoped_lock its_lock(events_mutex_); |
nothing calls this directly
no test coverage detected