diff options
Diffstat (limited to 'implementation/service_discovery/include')
8 files changed, 34 insertions, 13 deletions
diff --git a/implementation/service_discovery/include/entry_impl.hpp b/implementation/service_discovery/include/entry_impl.hpp index db12a1e..b41a94c 100755 --- a/implementation/service_discovery/include/entry_impl.hpp +++ b/implementation/service_discovery/include/entry_impl.hpp @@ -40,7 +40,7 @@ public: void set_instance(instance_t _instance);
major_version_t get_major_version() const;
- void set_major_version(major_version_t _version);
+ void set_major_version(major_version_t _major_version);
ttl_t get_ttl() const;
void set_ttl(ttl_t _ttl);
@@ -72,7 +72,7 @@ protected: std::uint8_t index2_;
entry_impl();
- entry_impl(const entry_impl &entry_);
+ entry_impl(const entry_impl &_entry);
};
} // namespace sd
diff --git a/implementation/service_discovery/include/ip_option_impl.hpp b/implementation/service_discovery/include/ip_option_impl.hpp index 1345835..a2a7660 100644 --- a/implementation/service_discovery/include/ip_option_impl.hpp +++ b/implementation/service_discovery/include/ip_option_impl.hpp @@ -17,7 +17,7 @@ class ip_option_impl: public option_impl { public: ip_option_impl(); virtual ~ip_option_impl(); - virtual bool operator ==(const ip_option_impl &_option) const; + virtual bool operator ==(const ip_option_impl &_other) const; uint16_t get_port() const; void set_port(uint16_t _port); diff --git a/implementation/service_discovery/include/message_impl.hpp b/implementation/service_discovery/include/message_impl.hpp index baca328..83d3a64 100755 --- a/implementation/service_discovery/include/message_impl.hpp +++ b/implementation/service_discovery/include/message_impl.hpp @@ -98,7 +98,7 @@ public: void forced_initial_events_add(forced_initial_events_t _entry);
const std::vector<forced_initial_events_t> forced_initial_events_get();
- void set_initial_events_required(bool _initial_events);
+ void set_initial_events_required(bool _initial_events_required);
bool initial_events_required() const;
private:
diff --git a/implementation/service_discovery/include/runtime.hpp b/implementation/service_discovery/include/runtime.hpp index f99fec8..670a7bb 100644 --- a/implementation/service_discovery/include/runtime.hpp +++ b/implementation/service_discovery/include/runtime.hpp @@ -10,6 +10,8 @@ namespace vsomeip {
+class configuration;
+
namespace sd {
class message_impl;
@@ -22,7 +24,8 @@ public: }
virtual std::shared_ptr<service_discovery> create_service_discovery(
- service_discovery_host *_host) const = 0;
+ service_discovery_host *_host,
+ std::shared_ptr<vsomeip::configuration> _configuration) const = 0;
virtual std::shared_ptr<message_impl> create_message() const = 0;
};
diff --git a/implementation/service_discovery/include/runtime_impl.hpp b/implementation/service_discovery/include/runtime_impl.hpp index dcdb7d7..0a9baaf 100644 --- a/implementation/service_discovery/include/runtime_impl.hpp +++ b/implementation/service_discovery/include/runtime_impl.hpp @@ -20,7 +20,8 @@ public: virtual ~runtime_impl(); std::shared_ptr<service_discovery> create_service_discovery( - service_discovery_host *_host) const; + service_discovery_host *_host, + std::shared_ptr<configuration> _configuration) const; std::shared_ptr<message_impl> create_message() const; }; diff --git a/implementation/service_discovery/include/service_discovery.hpp b/implementation/service_discovery/include/service_discovery.hpp index 92d80d3..e1c3dc4 100644 --- a/implementation/service_discovery/include/service_discovery.hpp +++ b/implementation/service_discovery/include/service_discovery.hpp @@ -11,6 +11,7 @@ #include <vsomeip/primitive_types.hpp> #include <vsomeip/enumeration_types.hpp> +#include <vsomeip/handler.hpp> #include "../../routing/include/serviceinfo.hpp" #include "../../endpoints/include/endpoint.hpp" #include "../include/service_discovery_host.hpp" @@ -26,7 +27,6 @@ public: virtual ~service_discovery() { } - virtual std::shared_ptr<configuration> get_configuration() const = 0; virtual boost::asio::io_service & get_io() = 0; virtual void init() = 0; @@ -72,6 +72,11 @@ public: service_t _service, instance_t _instance, eventgroup_t _eventgroup, client_t _client, bool _accepted, const std::shared_ptr<sd_message_identifier_t> &_sd_message_id) = 0; + + virtual void register_offer_acceptance_handler( + vsomeip::offer_acceptance_handler_t _handler) = 0; + virtual void register_reboot_notification_handler( + reboot_notification_handler_t _handler) = 0; }; } // namespace sd diff --git a/implementation/service_discovery/include/service_discovery_host.hpp b/implementation/service_discovery/include/service_discovery_host.hpp index f9e8f29..9c346fd 100644 --- a/implementation/service_discovery/include/service_discovery_host.hpp +++ b/implementation/service_discovery/include/service_discovery_host.hpp @@ -31,7 +31,6 @@ public: } virtual boost::asio::io_service & get_io() = 0; - virtual const std::shared_ptr<configuration> get_configuration() const = 0; virtual std::shared_ptr<endpoint> create_service_discovery_endpoint( const std::string &_address, uint16_t _port, bool _reliable) = 0; @@ -90,7 +89,7 @@ public: virtual bool has_identified(client_t _client, service_t _service, instance_t _instance, bool _reliable) = 0; - virtual std::chrono::steady_clock::time_point expire_subscriptions() = 0; + virtual std::chrono::steady_clock::time_point expire_subscriptions(bool _force) = 0; virtual std::shared_ptr<serviceinfo> get_offered_service( service_t _service, instance_t _instance) const = 0; diff --git a/implementation/service_discovery/include/service_discovery_impl.hpp b/implementation/service_discovery/include/service_discovery_impl.hpp index 995cfbc..77dbae9 100644 --- a/implementation/service_discovery/include/service_discovery_impl.hpp +++ b/implementation/service_discovery/include/service_discovery_impl.hpp @@ -56,10 +56,10 @@ struct subscriber_t { class service_discovery_impl: public service_discovery, public std::enable_shared_from_this<service_discovery_impl> { public: - service_discovery_impl(service_discovery_host *_host); + service_discovery_impl(service_discovery_host *_host, + std::shared_ptr<configuration> _configuration); virtual ~service_discovery_impl(); - std::shared_ptr<configuration> get_configuration() const; boost::asio::io_service & get_io(); void init(); @@ -102,6 +102,10 @@ public: service_t _service, instance_t _instance, eventgroup_t _eventgroup, client_t _client, bool _acknowledged, const std::shared_ptr<sd_message_identifier_t> &_sd_message_id); + + void register_offer_acceptance_handler(offer_acceptance_handler_t _handler); + void register_reboot_notification_handler( + reboot_notification_handler_t _handler); private: std::pair<session_t, bool> get_session(const boost::asio::ip::address &_address); void increment_session(const boost::asio::ip::address &_address); @@ -149,7 +153,9 @@ private: void process_serviceentry(std::shared_ptr<serviceentry_impl> &_entry, const std::vector<std::shared_ptr<option_impl> > &_options, - bool _unicast_flag, std::vector<std::pair<std::uint16_t, std::shared_ptr<message_impl>>>* _resubscribes); + bool _unicast_flag, + std::vector<std::pair<std::uint16_t, std::shared_ptr<message_impl>>>* _resubscribes, + bool _accept_offers); void process_offerservice_serviceentry( service_t _service, instance_t _instance, major_version_t _major, minor_version_t _minor, ttl_t _ttl, @@ -210,7 +216,7 @@ private: void stop_subscription_expiration_timer_unlocked(); void expire_subscriptions(const boost::system::error_code &_error); - bool check_ipv4_address(boost::asio::ip::address its_address); + bool check_ipv4_address(const boost::asio::ip::address& its_address) const; bool check_static_header_fields( const std::shared_ptr<const message> &_message) const; @@ -346,6 +352,7 @@ private: private: boost::asio::io_service &io_; service_discovery_host *host_; + std::shared_ptr<configuration> configuration_; boost::asio::ip::address unicast_; uint16_t port_; @@ -443,6 +450,12 @@ private: std::mutex remote_offer_types_mutex_; std::map<std::pair<service_t, instance_t>, remote_offer_type_e> remote_offer_types_; std::map<boost::asio::ip::address, std::set<std::pair<service_t, instance_t>>> remote_offers_by_ip_; + + reboot_notification_handler_t reboot_notification_handler_; + offer_acceptance_handler_t offer_acceptance_handler_; + + std::mutex offer_mutex_; + std::mutex check_ttl_mutex_; }; } // namespace sd |