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

Method clear_service_info

implementation/routing/src/routing_manager_impl.cpp:3817–3850  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3815}
3816
3817void routing_manager_impl::clear_service_info(service_t _service, instance_t _instance, bool _reliable) {
3818 std::shared_ptr<serviceinfo> its_info(find_service(_service, _instance));
3819 if (!its_info) {
3820 return;
3821 }
3822
3823 bool deleted_instance(false);
3824 bool deleted_service(false);
3825 {
3826 std::scoped_lock its_lock(services_mutex_);
3827
3828 // Clear service_info and service_group
3829 if (!its_info->get_endpoint(!_reliable)) {
3830 if (1 >= services_[_service].size()) {
3831 services_.erase(_service);
3832 deleted_service = true;
3833 } else {
3834 services_[_service].erase(_instance);
3835 deleted_instance = true;
3836 }
3837 } else {
3838 its_info->set_endpoint(nullptr, _reliable);
3839 }
3840 }
3841
3842 if ((deleted_instance || deleted_service) && !its_info->is_local()) {
3843 std::scoped_lock its_lock(services_remote_mutex_);
3844 if (deleted_service) {
3845 services_remote_.erase(_service);
3846 } else if (deleted_instance) {
3847 services_remote_[_service].erase(_instance);
3848 }
3849 }
3850}
3851
3852std::shared_ptr<serviceinfo> routing_manager_impl::find_service(service_t _service, instance_t _instance) const {
3853 std::shared_ptr<serviceinfo> its_info;

Callers

nothing calls this directly

Calls 4

get_endpointMethod · 0.45
sizeMethod · 0.45
set_endpointMethod · 0.45
is_localMethod · 0.45

Tested by

no test coverage detected