summaryrefslogtreecommitdiff
path: root/src/components/hmi_message_handler/src/mqueue_adapter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/hmi_message_handler/src/mqueue_adapter.cc')
-rw-r--r--src/components/hmi_message_handler/src/mqueue_adapter.cc144
1 files changed, 0 insertions, 144 deletions
diff --git a/src/components/hmi_message_handler/src/mqueue_adapter.cc b/src/components/hmi_message_handler/src/mqueue_adapter.cc
deleted file mode 100644
index 09bdd7e6d5..0000000000
--- a/src/components/hmi_message_handler/src/mqueue_adapter.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2014, Ford Motor Company
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of the Ford Motor Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "hmi_message_handler/mqueue_adapter.h"
-#include "hmi_message_handler/hmi_message_handler.h"
-#include "utils/logger.h"
-
-namespace hmi_message_handler {
-
-const uint32_t kMqueueSize = 100;
-const uint32_t kMqueueMessageSize = 65536;
-const char* kSdlToHmiQueue = "/sdl_to_hmi";
-const char* kHmiToSdlQueue = "/hmi_to_sdl";
-
-CREATE_LOGGERPTR_GLOBAL(logger_, "HMIMessageHandler")
-
-class ReceiverThreadDelegate : public threads::ThreadDelegate {
- public:
- ReceiverThreadDelegate(mqd_t mqueue_descriptor,
- HMIMessageHandler* hmi_message_handler)
- : mqueue_descriptor_(mqueue_descriptor)
- , hmi_message_handler_(hmi_message_handler) {}
-
- private:
- virtual void threadMain() {
- while (true) {
- static char buffer[kMqueueMessageSize];
- const ssize_t size =
- mq_receive(mqueue_descriptor_, buffer, kMqueueMessageSize, NULL);
- if (-1 == size) {
- LOG4CXX_ERROR(logger_, "Message queue receive failed, error " << errno);
- continue;
- }
- const std::string message_string(buffer, buffer + size);
- LOG4CXX_DEBUG(logger_, "Message: " << message_string);
- MessageSharedPointer message(new application_manager::Message(
- protocol_handler::MessagePriority::kDefault));
- message->set_json_message(message_string);
- message->set_protocol_version(application_manager::ProtocolVersion::kHMI);
- hmi_message_handler_->OnMessageReceived(message);
- }
- }
-
- const mqd_t mqueue_descriptor_;
- HMIMessageHandler* hmi_message_handler_;
-};
-
-MqueueAdapter::MqueueAdapter(HMIMessageHandler* hmi_message_handler)
- : HMIMessageAdapterImpl(hmi_message_handler)
- , sdl_to_hmi_mqueue_(-1)
- , hmi_to_sdl_mqueue_(-1)
- , receiver_thread_delegate_(NULL)
- , receiver_thread_(NULL) {
- mq_attr mq_attributes;
- mq_attributes.mq_maxmsg = kMqueueSize;
- mq_attributes.mq_msgsize = kMqueueMessageSize;
- sdl_to_hmi_mqueue_ =
- mq_open(kSdlToHmiQueue, O_CREAT | O_RDWR, S_IRWXU, &mq_attributes);
- if (-1 == sdl_to_hmi_mqueue_) {
- LOG4CXX_ERROR(logger_,
- "Could not open message queue " << kSdlToHmiQueue
- << ", error " << errno);
- return;
- }
- hmi_to_sdl_mqueue_ =
- mq_open(kHmiToSdlQueue, O_CREAT | O_RDWR, S_IRWXU, &mq_attributes);
- if (-1 == hmi_to_sdl_mqueue_) {
- LOG4CXX_ERROR(logger_,
- "Could not open message queue " << kHmiToSdlQueue
- << ", error " << errno);
- return;
- }
- receiver_thread_delegate_ =
- new ReceiverThreadDelegate(hmi_to_sdl_mqueue_, hmi_message_handler);
- receiver_thread_ =
- threads::CreateThread("MqueueAdapter", receiver_thread_delegate_);
- receiver_thread_->start();
-}
-
-MqueueAdapter::~MqueueAdapter() {
- receiver_thread_->join();
- delete receiver_thread_delegate_;
- threads::DeleteThread(receiver_thread_);
- if (-1 != hmi_to_sdl_mqueue_)
- mq_close(hmi_to_sdl_mqueue_);
- if (-1 != sdl_to_hmi_mqueue_)
- mq_close(sdl_to_hmi_mqueue_);
- mq_unlink(kHmiToSdlQueue);
- mq_unlink(kSdlToHmiQueue);
-}
-
-void MqueueAdapter::SendMessageToHMI(const MessageSharedPointer message) {
- LOG4CXX_AUTO_TRACE(logger_);
-
- if (-1 == sdl_to_hmi_mqueue_) {
- LOG4CXX_ERROR(logger_, "Message queue is not opened");
- return;
- }
- const std::string& json = message->json_message();
- if (json.size() > kMqueueMessageSize) {
- LOG4CXX_ERROR(logger_, "Message size " << json.size() << " is too big");
- return;
- }
- const int rc = mq_send(sdl_to_hmi_mqueue_, json.c_str(), json.size(), 0);
- if (0 != rc) {
- LOG4CXX_ERROR(logger_, "Could not send message, error " << errno);
- return;
- }
-}
-
-void MqueueAdapter::SubscribeTo() {
- // empty implementation of pure virtual method, actually it's not called
-}
-
-} // namespace hmi_message_handler