summaryrefslogtreecommitdiff
path: root/src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2016-09-20 11:44:51 -0400
committerJacob Keeler <jacob.keeler@livioradio.com>2016-09-20 14:37:25 -0400
commit039581419749dbdd32590804e8b14a77fcaf9636 (patch)
treeced927fc4bef4686f7373a5f45dd692bd9fc9de0 /src/components/hmi_message_handler/include/hmi_message_handler/hmi_message_handler_impl.h
parent1b96b7c02d2e338b846a7314c6fa0bdaa31f7c5e (diff)
parentaff7f09a4ec07becfb64dc78992580061d3342ff (diff)
downloadsdl_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.h56
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