summaryrefslogtreecommitdiff
path: root/implementation/routing/include
diff options
context:
space:
mode:
Diffstat (limited to 'implementation/routing/include')
-rw-r--r--implementation/routing/include/event.hpp6
-rw-r--r--implementation/routing/include/routing_manager.hpp4
-rw-r--r--implementation/routing/include/routing_manager_impl.hpp8
-rw-r--r--implementation/routing/include/routing_manager_proxy.hpp12
-rw-r--r--implementation/routing/include/routing_manager_stub_host.hpp4
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;