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

Method update_routing_info

implementation/routing/src/routing_manager_impl.cpp:1845–1879  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1843}
1844
1845void routing_manager_impl::update_routing_info(std::chrono::milliseconds _elapsed) {
1846 std::map<service_t, std::vector<instance_t>> its_expired_offers;
1847
1848 {
1849 std::scoped_lock its_lock{services_remote_mutex_};
1850 for (const auto& [service, instances] : services_remote_) {
1851 for (const auto& [instance, info] : instances) {
1852 ttl_t its_ttl = info->get_ttl();
1853 if (its_ttl < DEFAULT_TTL) { // do not touch "forever"
1854 std::chrono::milliseconds precise_ttl = info->get_precise_ttl();
1855 if (precise_ttl.count() < _elapsed.count() || precise_ttl.count() == 0) {
1856 info->set_ttl(0);
1857 its_expired_offers[service].push_back(instance);
1858 } else {
1859 std::chrono::milliseconds its_new_ttl(precise_ttl - _elapsed);
1860 info->set_precise_ttl(its_new_ttl);
1861 }
1862 }
1863 }
1864 }
1865 }
1866
1867 for (const auto& [service, instances] : its_expired_offers) {
1868 for (const auto& instance : instances) {
1869 if (discovery_) {
1870 discovery_->unsubscribe_all(service, instance);
1871 // go to Initial Wait Phase
1872 discovery_->reset_request_sent_counter(service, instance);
1873 }
1874 del_routing_info(service, instance, true, true, true);
1875 VSOMEIP_INFO_P << "Update_routing_info: elapsed=" << _elapsed.count() << " : delete service/instance " << hex4(service) << "."
1876 << hex4(instance);
1877 }
1878 }
1879}
1880
1881void routing_manager_impl::expire_services(const boost::asio::ip::address& _address) {
1882 expire_services(_address, port_range_t(ANY_PORT, ANY_PORT), false);

Callers 1

check_ttlMethod · 0.80

Calls 8

hex4Function · 0.85
get_precise_ttlMethod · 0.80
countMethod · 0.80
set_precise_ttlMethod · 0.80
get_ttlMethod · 0.45
set_ttlMethod · 0.45
unsubscribe_allMethod · 0.45

Tested by

no test coverage detected