diff options
Diffstat (limited to 'implementation/routing/include')
5 files changed, 21 insertions, 13 deletions
diff --git a/implementation/routing/include/event.hpp b/implementation/routing/include/event.hpp index 89153ad..2036636 100644 --- a/implementation/routing/include/event.hpp +++ b/implementation/routing/include/event.hpp @@ -35,6 +35,9 @@ public: instance_t get_instance() const; void set_instance(instance_t _instance); + major_version_t get_version() const; + void set_version(major_version_t _major); + event_t get_event() const; void set_event(event_t _event); @@ -51,9 +54,6 @@ public: bool is_field() const; void set_field(bool _is_field); - bool is_reliable() const; - void set_reliable(bool _is_reliable); - bool is_provided() const; void set_provided(bool _is_provided); diff --git a/implementation/routing/include/routing_manager.hpp b/implementation/routing/include/routing_manager.hpp index 7791add..2642677 100644 --- a/implementation/routing/include/routing_manager.hpp +++ b/implementation/routing/include/routing_manager.hpp @@ -50,7 +50,7 @@ public: virtual void subscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup, - major_version_t _major) = 0; + major_version_t _major, subscription_type_e _subscription_type) = 0; virtual void unsubscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup) = 0; @@ -68,7 +68,7 @@ public: const byte_t *_data, uint32_t _size) = 0; virtual void register_event(client_t _client, service_t _service, instance_t _instance, - event_t _event, std::set<eventgroup_t> _eventgroups, + event_t _event, const std::set<eventgroup_t> &_eventgroups, bool _is_field, bool _is_provided) = 0; virtual void unregister_event(client_t _client, service_t _service, instance_t _instance, diff --git a/implementation/routing/include/routing_manager_impl.hpp b/implementation/routing/include/routing_manager_impl.hpp index a0d692c..9741f3e 100644 --- a/implementation/routing/include/routing_manager_impl.hpp +++ b/implementation/routing/include/routing_manager_impl.hpp @@ -76,7 +76,8 @@ public: instance_t _instance); void subscribe(client_t _client, service_t _service, instance_t _instance, - eventgroup_t _eventgroup, major_version_t _major); + eventgroup_t _eventgroup, major_version_t _major, + subscription_type_e _subscription_type); void unsubscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup); @@ -94,7 +95,7 @@ public: void register_event(client_t _client, service_t _service, instance_t _instance, event_t _event, - std::set<eventgroup_t> _eventgroups, + const std::set<eventgroup_t> &_eventgroups, bool _is_field, bool _is_provided); void unregister_event(client_t _client, service_t _service, @@ -158,6 +159,9 @@ public: void on_subscribe_ack(service_t _service, instance_t _instance, const boost::asio::ip::address &_address, uint16_t _port); + void expire_subscriptions(const boost::asio::ip::address &_address); + void expire_services(const boost::asio::ip::address &_address); + private: bool deliver_message(const byte_t *_data, length_t _length, instance_t _instance, bool _reliable); diff --git a/implementation/routing/include/routing_manager_proxy.hpp b/implementation/routing/include/routing_manager_proxy.hpp index 852ca19..0577597 100644 --- a/implementation/routing/include/routing_manager_proxy.hpp +++ b/implementation/routing/include/routing_manager_proxy.hpp @@ -13,6 +13,7 @@ #include "routing_manager.hpp" #include "../../endpoints/include/endpoint_host.hpp" +#include <vsomeip/enumeration_types.hpp> namespace vsomeip { @@ -52,7 +53,8 @@ public: instance_t _instance); void subscribe(client_t _client, service_t _service, instance_t _instance, - eventgroup_t _eventgroup, major_version_t _major); + eventgroup_t _eventgroup, major_version_t _major, + subscription_type_e _subscription_type); void unsubscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup); @@ -70,7 +72,7 @@ public: void register_event(client_t _client, service_t _service, instance_t _instance, event_t _event, - std::set<eventgroup_t> _eventgroups, + const std::set<eventgroup_t> &_eventgroups, bool _is_field, bool _is_provided); void unregister_event(client_t _client, service_t _service, @@ -112,11 +114,11 @@ private: minor_version_t _minor, bool _use_exclusive_proxy); void send_register_event(client_t _client, service_t _service, instance_t _instance, event_t _event, - std::set<eventgroup_t> _eventgroup, + const std::set<eventgroup_t> &_eventgroup, bool _is_field, bool _is_provided); void send_subscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup, - major_version_t _major); + major_version_t _major, subscription_type_e _subscription_type); bool is_field(service_t _service, instance_t _instance, event_t _event) const; @@ -139,6 +141,7 @@ private: std::map<client_t, std::shared_ptr<endpoint> > local_endpoints_; std::map<service_t, std::map<instance_t, client_t> > local_services_; + std::map<service_t, std::map<instance_t, major_version_t> > service_versions_; std::mutex local_services_mutex_; struct service_data_t { @@ -181,6 +184,7 @@ private: instance_t instance_; eventgroup_t eventgroup_; major_version_t major_; + subscription_type_e subscription_type_; bool operator<(const eventgroup_data_t &_other) const { return (service_ < _other.service_ diff --git a/implementation/routing/include/routing_manager_stub_host.hpp b/implementation/routing/include/routing_manager_stub_host.hpp index f25eef2..d56f2d3 100644 --- a/implementation/routing/include/routing_manager_stub_host.hpp +++ b/implementation/routing/include/routing_manager_stub_host.hpp @@ -31,7 +31,7 @@ public: virtual void register_event(client_t _client, service_t _service, instance_t _instance, event_t _event, - std::set<eventgroup_t> _eventgroups, + const std::set<eventgroup_t> &_eventgroups, bool _is_field, bool _is_provided) = 0; virtual void unregister_event(client_t _client, service_t _service, @@ -39,7 +39,7 @@ public: virtual void subscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup, - major_version_t _major) = 0; + major_version_t _major, subscription_type_e _subscription_type) = 0; virtual void unsubscribe(client_t _client, service_t _service, instance_t _instance, eventgroup_t _eventgroup) = 0; |