diff options
Diffstat (limited to 'implementation/service_discovery')
-rw-r--r-- | implementation/service_discovery/include/service_discovery_host.hpp | 5 | ||||
-rw-r--r-- | implementation/service_discovery/src/service_discovery_impl.cpp | 7 |
2 files changed, 10 insertions, 2 deletions
diff --git a/implementation/service_discovery/include/service_discovery_host.hpp b/implementation/service_discovery/include/service_discovery_host.hpp index 710e4e7..0e1de9e 100644 --- a/implementation/service_discovery/include/service_discovery_host.hpp +++ b/implementation/service_discovery/include/service_discovery_host.hpp @@ -44,7 +44,7 @@ public: virtual bool send_to(const std::shared_ptr<endpoint_definition> &_target, const byte_t *_data, uint32_t _size, uint16_t _sd_port) = 0; - virtual std::chrono::milliseconds add_routing_info(service_t _service, instance_t _instance, + virtual void add_routing_info(service_t _service, instance_t _instance, major_version_t _major, minor_version_t _minor, ttl_t _ttl, const boost::asio::ip::address &_reliable_address, uint16_t _reliable_port, @@ -81,6 +81,9 @@ public: virtual void expire_subscriptions(const boost::asio::ip::address &_address) = 0; virtual void expire_services(const boost::asio::ip::address &_address) = 0; + virtual void on_reboot(const boost::asio::ip::address &_address) = 0; + + virtual bool on_subscribe_accepted(service_t _service, instance_t _instance, eventgroup_t _eventgroup, std::shared_ptr<endpoint_definition> _target, const std::chrono::steady_clock::time_point &_expiration) = 0; diff --git a/implementation/service_discovery/src/service_discovery_impl.cpp b/implementation/service_discovery/src/service_discovery_impl.cpp index 9fc955d..7318eda 100644 --- a/implementation/service_discovery/src/service_discovery_impl.cpp +++ b/implementation/service_discovery/src/service_discovery_impl.cpp @@ -1039,6 +1039,7 @@ void service_discovery_impl::on_message(const byte_t *_data, length_t _length, its_message->get_reboot_flag(), its_message->get_session())) { host_->expire_subscriptions(_sender); host_->expire_services(_sender); + host_->on_reboot(_sender); } std::chrono::milliseconds expired = stop_ttl_timer(); @@ -1214,10 +1215,14 @@ void service_discovery_impl::process_offerservice_serviceentry( its_request->set_sent_counter(std::uint8_t(repetitions_max_ + 1)); } - smallest_ttl_ = host_->add_routing_info(_service, _instance, + host_->add_routing_info(_service, _instance, _major, _minor, _ttl, _reliable_address, _reliable_port, _unreliable_address, _unreliable_port); + const std::chrono::milliseconds its_precise_ttl(_ttl * 1000); + if (its_precise_ttl < smallest_ttl_) { + smallest_ttl_ = its_precise_ttl; + } std::lock_guard<std::mutex> its_lock(subscribed_mutex_); auto found_service = subscribed_.find(_service); |