diff options
author | Lutz Bichler <Lutz.Bichler@bmw.de> | 2015-02-16 17:20:18 +0100 |
---|---|---|
committer | Lutz Bichler <Lutz.Bichler@bmw.de> | 2015-02-16 17:20:18 +0100 |
commit | 3b341c0235bbe2ca1935b384e25349aaf147ba70 (patch) | |
tree | db04d5f1f6d62bf3e2c5a35774c746963274d242 | |
parent | 36d51624b0971dd87026184596e5abf2d8a71ae1 (diff) | |
download | vSomeIP-3b341c0235bbe2ca1935b384e25349aaf147ba70.tar.gz |
Enable notification from routing manager proxies.
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, }; |