X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=service%2Fsystem%2Flogger_service%2Fserver%2Fsrc%2Floggerservicedebug_child_thread.cpp;fp=service%2Fsystem%2Flogger_service%2Fserver%2Fsrc%2Floggerservicedebug_child_thread.cpp;h=4a8668f012bc747fabfe96d296a8ae5763173edd;hb=17cf21bcf8a2e29d2cbcf0a313474d2a4ee44f5d;hp=0000000000000000000000000000000000000000;hpb=9e86046cdb356913ae026f616e5bf17f6f238aa5;p=staging%2Fbasesystem.git diff --git a/service/system/logger_service/server/src/loggerservicedebug_child_thread.cpp b/service/system/logger_service/server/src/loggerservicedebug_child_thread.cpp new file mode 100755 index 0000000..4a8668f --- /dev/null +++ b/service/system/logger_service/server/src/loggerservicedebug_child_thread.cpp @@ -0,0 +1,134 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/////////////////////////////////////////////////////////////////////////////// +/// \ingroup tag_NS_InterfaceunifiedLogCapture +/// \brief Class that threads for usb, and readers use to AGL and get +/// information from the parent. +/// +/////////////////////////////////////////////////////////////////////////////// +// System Headers +#include +#include + +const CHAR g_strLogQueReaderWorkerName[] = "pdg.LogQueR"; +const CHAR g_strTransmitQueReaderWorkerName[] = "pdg.TransQueR"; +const CHAR g_strPerformanceQueReaderWorkerName[] = "pdg.PerformQueR"; +const CHAR g_strUsbEjectWorkerName[] = "pdg.UsbEject"; +const CHAR g_strUsbLogCaptureWorkerName[] = "pdg.UsbLogCapt"; +const CHAR g_strCaptureLogScriptExeName[] = "pdg.CaptLogScri"; + +LoggerserviceDebugChildThread::LoggerserviceDebugChildThread() { + names[LoggerserviceDebugChildThread::kLoggerserviceDebugLogQueReader] = + g_strLogQueReaderWorkerName; + names[LoggerserviceDebugChildThread::kLoggerserviceDebugTransmitQueReader] = + g_strTransmitQueReaderWorkerName; + names[LoggerserviceDebugChildThread::kLoggerserviceDebugCaptureLogScript] = + g_strCaptureLogScriptExeName; + names[LoggerserviceDebugChildThread::kLoggerservicePerformanceLogQueReader] = + g_strPerformanceQueReaderWorkerName; + + threads[LoggerserviceDebugChildThread::kLoggerserviceDebugLogQueReader] = NULL; + threads[LoggerserviceDebugChildThread::kLoggerserviceDebugTransmitQueReader] = NULL; + threads[LoggerserviceDebugChildThread::kLoggerserviceDebugCaptureLogScript] = NULL; + threads[LoggerserviceDebugChildThread::kLoggerservicePerformanceLogQueReader] = NULL; +} // LCOV_EXCL_BR_LINE 10:the last line + +LoggerserviceDebugChildThread::~LoggerserviceDebugChildThread() { // LCOV_EXCL_START 14:global instance + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert +} +// LCOV_EXCL_STOP + +BOOL LoggerserviceDebugChildThread::Start(ELoggerserviceDebugThreads id, const char* parentsName, + const char * sendDataToQue, + void* (*routine)(void*), + const char * sendToUdpQue) { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + BOOL rtn = FALSE; + if (id < LoggerserviceDebugChildThread::kLoggerserviceDebugMax && id > -1) { + if (threads[id] == NULL) { + if ( NULL + != (threads[id] = new (std::nothrow) CChild(parentsName, + sendDataToQue, + names[id].c_str(), + routine, sendToUdpQue))) { + rtn = TRUE; + } + } else { + rtn = TRUE; + } + } + + return rtn; +} +// LCOV_EXCL_STOP + +void LoggerserviceDebugChildThread::Stop(ELoggerserviceDebugThreads id) { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + if (id < LoggerserviceDebugChildThread::kLoggerserviceDebugMax && id > -1) { + if (threads[id] != NULL) { + delete threads[id]; + threads[id] = NULL; + } + } +} +// LCOV_EXCL_STOP + +BOOL LoggerserviceDebugChildThread::Running(ELoggerserviceDebugThreads id) const { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + BOOL rtn = FALSE; + if (id < LoggerserviceDebugChildThread::kLoggerserviceDebugMax && id > -1) { + if (threads[id] != NULL) { + rtn = TRUE; + } + } + + return rtn; +} +// LCOV_EXCL_STOP + +void LoggerserviceDebugChildThread::StopAll() { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + for (int id = kLoggerserviceDebugLogQueReader; id < kLoggerserviceDebugMax; id++) { + if (threads[id] != NULL) { + threads[id]->Join(); + delete threads[id]; + threads[id] = NULL; + } + } +} +// LCOV_EXCL_STOP + +const char * LoggerserviceDebugChildThread::Name(ELoggerserviceDebugThreads id) { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + if (id < LoggerserviceDebugChildThread::kLoggerserviceDebugMax && id > -1) { + return names[id].c_str(); + } + + return NULL; +} +// LCOV_EXCL_STOP + +void LoggerserviceDebugChildThread::LiftWaitBarrier(ELoggerserviceDebugThreads id) { // LCOV_EXCL_START 7:debug code + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + if (id < LoggerserviceDebugChildThread::kLoggerserviceDebugMax && id > -1) { + if (threads[id] != NULL) { + threads[id]->IsValidWaitBarrier(); + } + } +} +// LCOV_EXCL_STOP +