summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLutz Bichler <Lutz.Bichler@bmw.de>2015-02-16 17:20:18 +0100
committerLutz Bichler <Lutz.Bichler@bmw.de>2015-02-16 17:20:18 +0100
commit3b341c0235bbe2ca1935b384e25349aaf147ba70 (patch)
treedb04d5f1f6d62bf3e2c5a35774c746963274d242
parent36d51624b0971dd87026184596e5abf2d8a71ae1 (diff)
downloadvSomeIP-3b341c0235bbe2ca1935b384e25349aaf147ba70.tar.gz
Enable notification from routing manager proxies.
-rw-r--r--implementation/routing/include/routing_manager.hpp2
-rw-r--r--implementation/routing/include/routing_manager_impl.hpp2
-rw-r--r--implementation/routing/include/routing_manager_proxy.hpp7
-rw-r--r--implementation/routing/src/routing_manager_impl.cpp2
-rw-r--r--implementation/routing/src/routing_manager_proxy.cpp32
5 files changed, 11 insertions, 34 deletions
diff --git a/implementation/routing/include/routing_manager.hpp b/implementation/routing/include/routing_manager.hpp
index 3416dc1..6391890 100644
--- a/implementation/routing/include/routing_manager.hpp
+++ b/implementation/routing/include/routing_manager.hpp
@@ -68,7 +68,7 @@ public:
const byte_t *_data, uint32_t _size) = 0;
virtual void notify(service_t _service, instance_t _instance, event_t _event,
- std::shared_ptr<payload> _payload) const = 0;
+ std::shared_ptr<payload> _payload) = 0;
virtual bool is_available(service_t _service,
instance_t _instance) const = 0;
diff --git a/implementation/routing/include/routing_manager_impl.hpp b/implementation/routing/include/routing_manager_impl.hpp
index d9c0ed4..66ea31f 100644
--- a/implementation/routing/include/routing_manager_impl.hpp
+++ b/implementation/routing/include/routing_manager_impl.hpp
@@ -95,7 +95,7 @@ public:
const byte_t *_data, uint32_t _size);
void notify(service_t _service, instance_t _instance, event_t _event,
- std::shared_ptr<payload> _payload) const;
+ std::shared_ptr<payload> _payload);
bool is_available(service_t _service, instance_t _instance) const;
diff --git a/implementation/routing/include/routing_manager_proxy.hpp b/implementation/routing/include/routing_manager_proxy.hpp
index c73fd3d..ea9c0e0 100644
--- a/implementation/routing/include/routing_manager_proxy.hpp
+++ b/implementation/routing/include/routing_manager_proxy.hpp
@@ -71,7 +71,7 @@ public:
const byte_t *_data, uint32_t _size);
void notify(service_t _service, instance_t _instance, event_t _event,
- std::shared_ptr<payload> _payload) const;
+ std::shared_ptr<payload> _payload);
void on_connect(std::shared_ptr<endpoint> _endpoint);
void on_disconnect(std::shared_ptr<endpoint> _endpoint);
@@ -92,8 +92,6 @@ private:
void deregister_application();
std::shared_ptr<endpoint> create_local(client_t _client);
- std::shared_ptr<event> find_event(service_t _service, instance_t _instance,
- event_t _event) const;
void send_pong() const;
@@ -114,9 +112,6 @@ 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, std::map<event_t, std::shared_ptr<event> > > > events_;
-
std::mutex send_mutex_;
std::mutex serialize_mutex_;
std::mutex deserialize_mutex_;
diff --git a/implementation/routing/src/routing_manager_impl.cpp b/implementation/routing/src/routing_manager_impl.cpp
index 9985e77..e81bfe8 100644
--- a/implementation/routing/src/routing_manager_impl.cpp
+++ b/implementation/routing/src/routing_manager_impl.cpp
@@ -377,7 +377,7 @@ bool routing_manager_impl::send_to(
void routing_manager_impl::notify(
service_t _service, instance_t _instance, event_t _event,
- std::shared_ptr<payload> _payload) const {
+ std::shared_ptr<payload> _payload) {
std::shared_ptr<event> its_event = find_event(_service, _instance, _event);
if (its_event) {
its_event->set_payload(_payload);
diff --git a/implementation/routing/src/routing_manager_proxy.cpp b/implementation/routing/src/routing_manager_proxy.cpp
index 94c27f6..1415542 100644
--- a/implementation/routing/src/routing_manager_proxy.cpp
+++ b/implementation/routing/src/routing_manager_proxy.cpp
@@ -282,15 +282,13 @@ bool routing_manager_proxy::send_to(
void routing_manager_proxy::notify(
service_t _service, instance_t _instance, event_t _event,
- std::shared_ptr<payload> _payload) const {
- std::shared_ptr<event> its_event = find_event(_service, _instance, _event);
- if (its_event) {
- its_event->set_payload(_payload);
- } else {
- VSOMEIP_ERROR << "routing_manager_proxy::notify: event ["
- << std::hex << _service << "." << _instance << "." << _event
- << "] is unknown.";
- }
+ std::shared_ptr<payload> _payload) {
+ std::shared_ptr<message> its_notification = runtime::get()->create_notification();
+ its_notification->set_service(_service);
+ its_notification->set_instance(_instance);
+ its_notification->set_method(_event);
+ its_notification->set_payload(_payload);
+ send(VSOMEIP_ROUTING_CLIENT, its_notification, true, true);
}
void routing_manager_proxy::on_connect(std::shared_ptr<endpoint> _endpoint) {
@@ -554,22 +552,6 @@ std::shared_ptr<endpoint> routing_manager_proxy::find_local(service_t _service,
return (find_local(its_client));
}
-std::shared_ptr<event> routing_manager_proxy::find_event(service_t _service,
- instance_t _instance, event_t _event) const {
- std::shared_ptr<event> its_event;
- auto find_service = events_.find(_service);
- if (find_service != events_.end()) {
- auto find_instance = find_service->second.find(_instance);
- if (find_instance != find_service->second.end()) {
- auto find_event = find_instance->second.find(_event);
- if (find_event != find_instance->second.end()) {
- its_event = find_event->second;
- }
- }
- }
- return (its_event);
-}
-
void routing_manager_proxy::send_pong() const {
byte_t its_pong[] = {
VSOMEIP_PONG, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };