| 3815 | } |
| 3816 | |
| 3817 | void 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 | |
| 3852 | std::shared_ptr<serviceinfo> routing_manager_impl::find_service(service_t _service, instance_t _instance) const { |
| 3853 | std::shared_ptr<serviceinfo> its_info; |
nothing calls this directly
no test coverage detected