diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2016-09-20 11:44:51 -0400 |
---|---|---|
committer | Jacob Keeler <jacob.keeler@livioradio.com> | 2016-09-20 14:37:25 -0400 |
commit | 039581419749dbdd32590804e8b14a77fcaf9636 (patch) | |
tree | ced927fc4bef4686f7373a5f45dd692bd9fc9de0 /src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h | |
parent | 1b96b7c02d2e338b846a7314c6fa0bdaa31f7c5e (diff) | |
parent | aff7f09a4ec07becfb64dc78992580061d3342ff (diff) | |
download | sdl_core-039581419749dbdd32590804e8b14a77fcaf9636.tar.gz |
Merge branch 'master'
Diffstat (limited to 'src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h')
-rw-r--r-- | src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h b/src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h index d638f370d8..3b829b0f27 100644 --- a/src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h +++ b/src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h @@ -36,16 +36,15 @@ #include <set> #include "hmi_message_handler/hmi_message_adapter.h" #include "hmi_message_handler/hmi_message_handler.h" +#include "hmi_message_handler/hmi_message_handler_settings.h" #include "utils/macro.h" #include "utils/message_queue.h" #include "utils/prioritized_queue.h" #include "utils/threads/message_loop_thread.h" #include "utils/threads/thread.h" -#include "utils/singleton.h" namespace hmi_message_handler { - namespace impl { /* * These dummy classes are here to locally impose strong typing on different @@ -54,35 +53,41 @@ namespace impl { * TODO(ik): replace these with globally defined message types * when we have them. */ -struct MessageFromHmi: public MessageSharedPointer { - MessageFromHmi(const MessageSharedPointer& message) +struct MessageFromHmi : public MessageSharedPointer { + MessageFromHmi() {} + explicit MessageFromHmi(const MessageSharedPointer& message) : MessageSharedPointer(message) {} // PrioritizedQueue requres this method to decide which priority to assign - size_t PriorityOrder() const { return (*this)->Priority().OrderingValue(); } + size_t PriorityOrder() const { + return (*this)->Priority().OrderingValue(); + } }; -struct MessageToHmi: public MessageSharedPointer { - MessageToHmi(const MessageSharedPointer& message) +struct MessageToHmi : public MessageSharedPointer { + MessageToHmi() {} + explicit MessageToHmi(const MessageSharedPointer& message) : MessageSharedPointer(message) {} // PrioritizedQueue requres this method to decide which priority to assign - size_t PriorityOrder() const { return (*this)->Priority().OrderingValue(); } + size_t PriorityOrder() const { + return (*this)->Priority().OrderingValue(); + } }; -typedef threads::MessageLoopThread< - utils::PrioritizedQueue<MessageFromHmi> > FromHmiQueue; -typedef threads::MessageLoopThread< - utils::PrioritizedQueue<MessageToHmi> > ToHmiQueue; +typedef threads::MessageLoopThread<utils::PrioritizedQueue<MessageFromHmi> > + FromHmiQueue; +typedef threads::MessageLoopThread<utils::PrioritizedQueue<MessageToHmi> > + ToHmiQueue; } class ToHMIThreadImpl; class FromHMIThreadImpl; -class HMIMessageHandlerImpl - : public HMIMessageHandler, - public impl::FromHmiQueue::Handler, - public impl::ToHmiQueue::Handler, - public utils::Singleton<HMIMessageHandlerImpl> { +class HMIMessageHandlerImpl : public HMIMessageHandler, + public impl::FromHmiQueue::Handler, + public impl::ToHmiQueue::Handler { public: + explicit HMIMessageHandlerImpl(const HMIMessageHandlerSettings& settings); + ~HMIMessageHandlerImpl(); void OnMessageReceived(MessageSharedPointer message); void SendMessageToHMI(MessageSharedPointer message); @@ -91,18 +96,28 @@ class HMIMessageHandlerImpl void AddHMIMessageAdapter(HMIMessageAdapter* adapter); void RemoveHMIMessageAdapter(HMIMessageAdapter* adapter); - private: - HMIMessageHandlerImpl(); + virtual const HMIMessageHandlerSettings& get_settings() const OVERRIDE; + +#ifdef BUILD_TESTS + std::set<HMIMessageAdapter*> message_adapters() const { + return message_adapters_; + } + HMIMessageObserver* observer() const { + return observer_; + } +#endif // BUILD_TESTS + private: // threads::MessageLoopThread<*>::Handler implementations // CALLED ON messages_from_hmi_ THREAD! virtual void Handle(const impl::MessageFromHmi message) OVERRIDE; // CALLED ON messages_to_hmi_ THREAD! virtual void Handle(const impl::MessageToHmi message) OVERRIDE; - private: + private: + const HMIMessageHandlerSettings& settings_; HMIMessageObserver* observer_; mutable sync_primitives::Lock observer_locker_; std::set<HMIMessageAdapter*> message_adapters_; @@ -115,7 +130,6 @@ class HMIMessageHandlerImpl impl::FromHmiQueue messages_from_hmi_; DISALLOW_COPY_AND_ASSIGN(HMIMessageHandlerImpl); - FRIEND_BASE_SINGLETON_CLASS(HMIMessageHandlerImpl); }; } // namespace hmi_message_handler |