summaryrefslogtreecommitdiff
path: root/implementation/service_discovery/include
diff options
context:
space:
mode:
Diffstat (limited to 'implementation/service_discovery/include')
-rwxr-xr-ximplementation/service_discovery/include/entry_impl.hpp4
-rw-r--r--implementation/service_discovery/include/ip_option_impl.hpp2
-rwxr-xr-ximplementation/service_discovery/include/message_impl.hpp2
-rw-r--r--implementation/service_discovery/include/runtime.hpp5
-rw-r--r--implementation/service_discovery/include/runtime_impl.hpp3
-rw-r--r--implementation/service_discovery/include/service_discovery.hpp7
-rw-r--r--implementation/service_discovery/include/service_discovery_host.hpp3
-rw-r--r--implementation/service_discovery/include/service_discovery_impl.hpp21
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