diff options
author | Jan Belle | 2016-09-28 09:35:20 +0000 |
---|---|---|
committer | Jan Belle | 2016-09-29 13:17:02 +0000 |
commit | 73efe3ca6ebe2b580e5847b728b8088cba35cc2d (patch) | |
tree | 87f8894c0e5900f6fc0aab14820281c692a8c96c /runtime/org.eclipse.etrice.runtime.cpp | |
parent | 22b8e8c7c55e06c6fa040b594bc56f18390b5af8 (diff) | |
download | org.eclipse.etrice-73efe3ca6ebe2b580e5847b728b8088cba35cc2d.tar.gz org.eclipse.etrice-73efe3ca6ebe2b580e5847b728b8088cba35cc2d.tar.xz org.eclipse.etrice-73efe3ca6ebe2b580e5847b728b8088cba35cc2d.zip |
[runtime.cpp.tests] Initial commit of MessageServiceTest
[runtime.cpp] Changed mutex_leave position in
MessageServiceController::terminate() method
Changed m_running set to true in MessageService::start() instead of
MessageService::run()
Fixed double delete of the MessageDispatcher and MessageSeQueue in
AbstractMessageService
[runtime.c] Changed etThread_sleep(int millis) from using sleep to
nanosleep for Linux_Posix
Change-Id: Ieccbfebea4eec6c2104a8356fb7948f0f3c3510c
Signed-off-by: Jan Belle <jan.belle@protos.de>
Diffstat (limited to 'runtime/org.eclipse.etrice.runtime.cpp')
3 files changed, 4 insertions, 5 deletions
diff --git a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/AbstractMessageService.cpp b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/AbstractMessageService.cpp index a52351d1b..e8b587735 100644 --- a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/AbstractMessageService.cpp +++ b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/AbstractMessageService.cpp @@ -18,8 +18,8 @@ namespace etRuntime { AbstractMessageService::AbstractMessageService(IRTObject* parent, const std::string& name, int node, int thread) : RTObject(parent, name), m_address(node, thread, 0), - m_messageQueue(this, "Queue"), - m_messageDispatcher(this, m_address.createInc(), "Dispatcher") { + m_messageQueue(NULL, "Queue"), + m_messageDispatcher(NULL, m_address.createInc(), "Dispatcher") { } Address AbstractMessageService::getFreeAddress() { diff --git a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageService.cpp b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageService.cpp index b6ef64a55..e2d74934c 100644 --- a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageService.cpp +++ b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageService.cpp @@ -67,7 +67,6 @@ void MessageService::MessageService_init(etTime interval, int priority) { } MessageService::~MessageService() { - std::cout << "~MessageService" << std::endl; etMutex_destruct(&m_mutex); etSema_destruct(&m_executionSemaphore); etThread_destruct(&m_thread); @@ -77,6 +76,7 @@ MessageService::~MessageService() { } void MessageService::start() { + m_running = true; etThread_start(&m_thread); if (m_execMode == IMessageService::POLLED || m_execMode == IMessageService::MIXED) { etTimer_start(&m_timer); @@ -84,7 +84,6 @@ void MessageService::start() { } void MessageService::run() { - m_running = true; while (m_running) { etMutex_enter(&m_mutex); const Message* msg = getMessageQueue().pop(); // get next Message from Queue diff --git a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageServiceController.cpp b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageServiceController.cpp index f6af90682..89ab179b4 100644 --- a/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageServiceController.cpp +++ b/runtime/org.eclipse.etrice.runtime.cpp/src/common/messaging/MessageServiceController.cpp @@ -112,13 +112,13 @@ void MessageServiceController::terminate() { // terminate all message services etMutex_enter(&m_mutex); m_terminateServices = m_messageServices; - etMutex_leave(&m_mutex); std::map<int, IMessageService*>::iterator it = m_terminateServices.begin(); for (; it != m_terminateServices.end(); ++it) { (it->second)->terminate(); //TODO TS: stop in order of priorities } + etMutex_leave(&m_mutex); } void MessageServiceController::waitTerminate() { |