summaryrefslogtreecommitdiffstats
path: root/systemservice/system_manager/server/src/heartbeat
diff options
context:
space:
mode:
Diffstat (limited to 'systemservice/system_manager/server/src/heartbeat')
-rwxr-xr-xsystemservice/system_manager/server/src/heartbeat/ss_hb_if.cpp201
-rwxr-xr-xsystemservice/system_manager/server/src/heartbeat/ss_hb_service_protocol.cpp184
-rwxr-xr-xsystemservice/system_manager/server/src/heartbeat/ss_hb_session.cpp415
-rwxr-xr-xsystemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp355
4 files changed, 0 insertions, 1155 deletions
diff --git a/systemservice/system_manager/server/src/heartbeat/ss_hb_if.cpp b/systemservice/system_manager/server/src/heartbeat/ss_hb_if.cpp
deleted file mode 100755
index a3c2777..0000000
--- a/systemservice/system_manager/server/src/heartbeat/ss_hb_if.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * @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_SystemManager
-/// \brief This file provides support for the application heartbeat system.
-///
-///////////////////////////////////////////////////////////////////////////////
-#include <native_service/frameworkunified_application.h>
-#include <native_service/frameworkunified_framework_if.h>
-#include <native_service/frameworkunified_service_protocol.h>
-#include <ss_hb_thread.h>
-#include <system_service/ss_sm_client_if.h>
-#include <system_service/ss_heartbeat_notifications.h>
-#include <system_service/ss_heartbeat_service_protocol.h>
-#include <system_service/ss_templates.h>
-#include <new>
-#include "ss_sm_systemmanagerlog.h"
-
-template<typename C, eFrameworkunifiedStatus (C::*M)(HANDLE)> EFrameworkunifiedStatus HBThreadCallback(HANDLE hThread) {
- EFrameworkunifiedStatus eStatus = eFrameworkunifiedStatusNullPointer;
- C * pObj = static_cast<C *>(FrameworkunifiedGetThreadSpecificData(hThread));
- if (pObj) { // LCOV_EXCL_BR_LINE 4:pObj must not be NULL
- eStatus = (pObj->*M)(hThread);
- }
- return eStatus;
-}
-
-static VOID DeletePObj(CHeartBeatThread * pObj) { // LCOV_EXCL_START 8: dead code
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- delete pObj;
-}
-// LCOV_EXCL_STOP
-
-static VOID DeleteHBTimer(CHeartBeatThread * pObj) { // LCOV_EXCL_START 8: dead code
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- EFrameworkunifiedStatus l_eStatus = pObj->HeartBeatTimersDelete();
- LOG_STATUS_IF_ERRORED(l_eStatus, "pObj->HeartBeatTimersDelete()");
-}
-// LCOV_EXCL_STOP
-
-#define DetachParentCbThreadProtocols(hThread, handler) \
-{ \
- EFrameworkunifiedStatus l_eStatus = DetachParentCallbacksFromInterfaceunifiedDispatcher( \
- hThread, \
- handler, \
- static_cast<UI_32>(_countof(handler))); \
- LOG_STATUS_IF_ERRORED(l_eStatus, "DetachParentCallbacksFromInterfaceunifiedDispatcher()") \
-}
-
-#define DetachCbProtocols(hThread, f_pStr, f_protocolHandlers, hSession) \
-{ \
- EFrameworkunifiedStatus l_eStatus = \
- DetachCallbacksFromInterfaceunifiedDispatcher( \
- hThread, \
- f_pStr, \
- f_protocolHandlers, \
- static_cast<UI_32>(_countof(f_protocolHandlers)), \
- hSession); \
- LOG_STATUS_IF_ERRORED(l_eStatus, "DetachCallbacksFromInterfaceunifiedDispatcher()") \
-}
-
-/*****************************************************************************/
-/**
- @ingroup: SS_SystemManager
- @brief: HBThreadStart: function would be called at the time of starting of the thread
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
- */
-/*****************************************************************************/
-EFrameworkunifiedStatus HBThreadStart(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG0(ZONE_FUNC, __FUNCTION__, "+");
-
- FrameworkunifiedProtocolCallbackHandler HBThreadCommonHandlers[] = {
- // Command ID, Call back functions
- { SS_HEARTBEAT_RESPONSE, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnClientResponse> },
- { SS_HEARTBEAT_PRINT_CONNECTIONS, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnPrintConnections> },
- { SS_HEARTBEAT_PRINT_STACK, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnPrintStack> } }; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
-
- FrameworkunifiedProtocolCallbackHandler HBThreadProtocolHandlers[] = {
- // Command ID, Call back functions
- { SS_HEARTBEAT_START, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnStartThread> },
- { SS_HEARTBEAT_STOP, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnStopThread> },
- { SS_HEARTBEAT_DELETE_MODULE_ENTRY, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnRemoveModule> },
- { SS_HEARTBEAT_APPEND_MODULE_ENTRY, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnAppendModule> },
- { SS_HEARTBEAT_PERIODIC_STATUS_REQ, HBThreadCallback<CHeartBeatThread,
- &CHeartBeatThread::HBOnPeriodicStatusRequest> },
- { SS_HEARTBEAT_AVAIL_CHECK_REQ, HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnAvailCheckRequest> }
- }; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
-
- CHeartBeatThread * pObj = new (std::nothrow) CHeartBeatThread(hThread); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- if (NULL == pObj) { // LCOV_EXCL_BR_LINE 5: Standard lib
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- l_eStatus = eFrameworkunifiedStatusNullPointer; // LCOV_EXCL_LINE 5: Standard lib
- LOG_ERROR("new(std::nothrow) CHeartBeatThread(hThread)"); // LCOV_EXCL_LINE 5: Standard lib
- // LCOV_EXCL_BR_START 6:always return eFrameworkunifiedStatusOK
- } else if (eFrameworkunifiedStatusOK != (l_eStatus = pObj->HeartBeatTimerInit(hThread))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("pObj->HeartBeatTimerInit(hThread)"); // LCOV_EXCL_LINE 6:always return eFrameworkunifiedStatusOK
- DeletePObj(pObj); // LCOV_EXCL_LINE 6:always return eFrameworkunifiedStatusOK
- // LCOV_EXCL_BR_START 4: NSFW error case.
- } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedAttachParentCallbacksToDispatcher(hThread,
- HBThreadProtocolHandlers, static_cast<UI_32>(_countof(HBThreadProtocolHandlers))))) {
- // LCOV_EXCL_BR_STOP
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedAttachParentCallbacksToDispatcher(HBThreadProtocolHandlers)");
- DeleteHBTimer(pObj);
- DeletePObj(pObj);
- // LCOV_EXCL_STOP
- // LCOV_EXCL_BR_START 4: NSFW error case.
- } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedAttachParentCallbacksToDispatcher(hThread,
- HBThreadCommonHandlers, static_cast<UI_32>(_countof(HBThreadCommonHandlers))))) {
- // LCOV_EXCL_BR_STOP
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedAttachParentCallbacksToDispatcher(HBThreadCommonHandlers)");
- DetachParentCbThreadProtocols(hThread, HBThreadProtocolHandlers);
- DeleteHBTimer(pObj);
- DeletePObj(pObj);
- // LCOV_EXCL_STOP
- } else if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedAttachCallbacksToDispatcher(hThread, FRAMEWORKUNIFIED_ANY_SOURCE, HBThreadCommonHandlers, static_cast<UI_32>(_countof(HBThreadCommonHandlers)), NULL))) { // LCOV_EXCL_BR_LINE 4: NSFW error case. // NOLINT(whitespace/line_length)
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedAttachCallbacksToDispatcher("
- "FRAMEWORKUNIFIED_ANY_SOURCE, HBThreadCommonHandlers)");
- DetachParentCbThreadProtocols(hThread, HBThreadCommonHandlers);
- DetachParentCbThreadProtocols(hThread, HBThreadProtocolHandlers);
- DeleteHBTimer(pObj);
- DeletePObj(pObj);
- // LCOV_EXCL_STOP
- } else {
- l_eStatus = FrameworkunifiedSetThreadSpecificData(hThread, pObj); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- if (eFrameworkunifiedStatusOK != l_eStatus) { // LCOV_EXCL_BR_LINE 4: NSFW error case.
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedSetThreadSpecificData(hThread, pObj)");
- DetachCbProtocols(hThread, FRAMEWORKUNIFIED_ANY_SOURCE, HBThreadCommonHandlers,
- NULL);
- DetachParentCbThreadProtocols(hThread, HBThreadCommonHandlers);
- DetachParentCbThreadProtocols(hThread, HBThreadProtocolHandlers);
- DeleteHBTimer(pObj);
- DeletePObj(pObj);
- // LCOV_EXCL_STOP
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Successful");
- }
- }
- FRAMEWORKUNIFIEDLOG0(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************/
-/**
- @ingroup: SS_SystemManager
- @brief: HBThreadStop: function would be called at the time of stopping of the thread
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
- */
-/*****************************************************************************/
-EFrameworkunifiedStatus HBThreadStop(HANDLE hThread) { // LCOV_EXCL_START 14: Resident process, not called by NSFW
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- EFrameworkunifiedStatus l_eStatus;
-
- FRAMEWORKUNIFIEDLOG0(ZONE_FUNC, __FUNCTION__, "+");
-
- CHeartBeatThread * pObj = static_cast<CHeartBeatThread *>(FrameworkunifiedGetThreadSpecificData(hThread));
- if (NULL == pObj) {
- l_eStatus = eFrameworkunifiedStatusNullPointer;
- LOG_ERROR("FrameworkunifiedGetThreadSpecificData(hThread)");
- } else {
- // delete timers
- CALL_AND_LOG_STATUS_IF_ERRORED(pObj->HeartBeatTimersDelete());
- CALL_AND_LOG_STATUS_IF_ERRORED(pObj->HBPublishAvailabilityStatus(hThread, FALSE));
- DeletePObj(pObj);
- }
-
- FrameworkunifiedSetThreadSpecificData(hThread, NULL);
- CALL_AND_LOG_STATUS_IF_ERRORED(FrameworkunifiedDetachServiceFromDispatcher(hThread, FrameworkunifiedGetAppName(hThread)));
-
- FRAMEWORKUNIFIEDLOG0(ZONE_FUNC, __FUNCTION__, "-");
-
- return l_eStatus;
-}// LCOV_EXCL_STOP
diff --git a/systemservice/system_manager/server/src/heartbeat/ss_hb_service_protocol.cpp b/systemservice/system_manager/server/src/heartbeat/ss_hb_service_protocol.cpp
deleted file mode 100755
index 5fb4e00..0000000
--- a/systemservice/system_manager/server/src/heartbeat/ss_hb_service_protocol.cpp
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * @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_SystemManager
-/// \brief This file provides support for the application heartbeat system.
-///
-///////////////////////////////////////////////////////////////////////////////
-#include <system_service/ss_heartbeat_service_protocol.h>
-#include <system_service/ss_system_manager_if.h>
-#include <system_service/ss_system_manager_if_local.h>
-#include <stdlib.h>
-#include <string.h>
-#include <native_service/frameworkunified_framework_if.h>
-#include <system_service/ss_services.h>
-#include <system_service/ss_templates.h>
-
-#include "ss_hb_thread.h"
-#include "ss_sm_systemmanagerlog.h"
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnTimerExpiry
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnTimerExpiry(HANDLE f_hThread) {
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
- EFrameworkunifiedStatus l_eStatus;
-
- // check heart beat replies received from clients.
- l_eStatus = HBCheckHeartBeatResponses(f_hThread);
- LOG_STATUS_IF_ERRORED(l_eStatus, "HBCheckHeartBeatResponses()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
-
- // send heart beat requests to clients
- l_eStatus = HBSendRequest(f_hThread);
- LOG_STATUS_IF_ERRORED(l_eStatus, "HBSendRequest()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
-
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return (l_eStatus);
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnClientResponse
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus OK or Fail
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnClientResponse(HANDLE f_hThread) {
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
- l_eStatus = m_oSessionHandler.HBProcessClientResponse(f_hThread);
- LOG_STATUS_IF_ERRORED(l_eStatus, "m_oSessionHandler.HBProcessClientResponse(f_hThread)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnPeriodicStatusRequest
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus OK or Fail
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnPeriodicStatusRequest(HANDLE f_hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendParent(f_hThread, SS_HEARTBEAT_PERIODIC_RESP, 0, NULL))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedSendParent(SS_HEARTBEAT_PERIODIC_RESP)"); // LCOV_EXCL_LINE 4: NSFW error case.
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "Successful");
- }
-
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnPeriodicStatusRequest
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus OK or Fail
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnAvailCheckRequest(HANDLE f_hThread) {
- FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "+");
-
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- THbAvailCheck check;
- l_eStatus = m_oSessionHandler.HBAvailableCheck(check);
- SS_ASERT(l_eStatus == eFrameworkunifiedStatusOK); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
-
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedSendParent(f_hThread, SS_HEARTBEAT_AVAIL_CHECK_RESP, sizeof(check), &check))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedSendParent(SS_HEARTBEAT_AVAIL_CHECK_RESP)"); // LCOV_EXCL_LINE 4: NSFW error case.
- }
-
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnRemoveModule
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus OK or Fail
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnRemoveModule(HANDLE f_hThread) {
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- TSMRequestMessage tReqMsgData;
- // ReadMsg(): *
- // Check hApp ptr, msg size, msg reception, read msg if all ok. *
- // Report any errors found. *
- // *
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg <TSMRequestMessage> (f_hThread, tReqMsgData))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("ReadMsg()"); // LCOV_EXCL_LINE 4: NSFW error case.
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
- " %s is required to be Deleted from HeartBeat Monitor List", tReqMsgData.pstModuleName);
-
- // delete module entry from map
- l_eStatus = m_oSessionHandler.HBDeleteRegisteredClientEntry(f_hThread, tReqMsgData.pstModuleName);
- LOG_STATUS_IF_ERRORED(l_eStatus, "m_oSessionHandler.HBDeleteRegisteredProcessEntry()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnAppendModule
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus OK or Fail
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnAppendModule(HANDLE f_hThread) {
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- TSMRequestMessage tReqMsgData;
- // ReadMsg(): *
- // Check hApp ptr, msg size, msg reception, read msg if all ok. *
- // Report any errors found. *
- // *
- if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg < TSMRequestMessage > (f_hThread, tReqMsgData))) {
- LOG_ERROR("ReadMsg()");
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
- " %s is required to be Appended from HeartBeat Monitor List", tReqMsgData.pstModuleName);
-
- // append module entry from map
- SubscriberName l_Subscriber = tReqMsgData.pstModuleName;
- l_eStatus = m_oSessionHandler.HBEntrySubscriber(l_Subscriber); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- LOG_STATUS_IF_ERRORED(l_eStatus, "m_oSessionHandler.HBEntrySubscriber()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-// EOF
diff --git a/systemservice/system_manager/server/src/heartbeat/ss_hb_session.cpp b/systemservice/system_manager/server/src/heartbeat/ss_hb_session.cpp
deleted file mode 100755
index 8178e46..0000000
--- a/systemservice/system_manager/server/src/heartbeat/ss_hb_session.cpp
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * @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_SystemManager
-/// \brief This file provides support for the application heartbeat system.
-///
-///////////////////////////////////////////////////////////////////////////////
-
-#include <native_service/frameworkunified_framework_if.h>
-#include <native_service/frameworkunified_service_protocol.h>
-#include <system_service/ss_heartbeat_service_protocol.h>
-#include <system_service/ss_services.h>
-#include <system_service/ss_sm_thread_names.h>
-#include <system_service/ss_templates.h>
-#include <iostream>
-#include <iomanip>
-#include <utility>
-#include <list>
-#include <string>
-
-#include "ss_sm_systemmanagerlog.h"
-#include "ss_hb_thread.h"
-#include "ss_hb_session.h"
-#include "ss_system_manager.h"
-
-using namespace std; // NOLINT
-
-CHeartBeatSessionHandler::CHeartBeatSessionHandler() {
-}
-
-CHeartBeatSessionHandler::~CHeartBeatSessionHandler() { // LCOV_EXCL_START 14: Resident process, not called by NSFW
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-}
-// LCOV_EXCL_STOP
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HbSessionInfo
- @note: HbSessionInfo constructor
- @param
- @return
- *****************************************************************************/
-CHeartBeatSessionHandler::HbSessionInfo::HbSessionInfo(SubscriberName f_Subscriber) {
- fRunning = FALSE;
- fHeartBeatRequestSent = FALSE;
- fHeartBeatResponseReceived = FALSE;
- HeartBeatRetryCount = 0;
- fHeartBeatTimedOut = FALSE;
- hSession = NULL;
- szName = f_Subscriber;
- fisAvailability = FALSE;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBEntrySubscriber
- @note:
- @param
- @return
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBEntrySubscriber(SubscriberName &f_Subscriber) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- // check if the subscriber is already in map
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.find(f_Subscriber);
-
- // the l_SessionInfoIterator is set to the end then the subscriber is not in the map
- if (m_mapHbSessions.end() == l_SessionInfoIterator) {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Entry Subscriber : %s", f_Subscriber.c_str());
- HbSessionInfo l_NewHBClientSessionInfo(f_Subscriber.c_str()); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
-
- pair<HbSessionIter, bool> ret;
- // insert new subscriber entry into the session map
- ret = m_mapHbSessions.insert(std::make_pair(f_Subscriber, l_NewHBClientSessionInfo));
- if (!ret.second) { // LCOV_EXCL_BR_LINE 6:l_NewHBClientSessionInfo must not be NULL.
- // LCOV_EXCL_START 6:l_NewHBClientSessionInfo must not be NULL.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- l_eStatus = eFrameworkunifiedStatusFail;
- SS_ASERT(0); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- // LCOV_EXCL_STOP
- }
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Subscriber '%s' is already in the map", f_Subscriber.c_str());
- }
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: ProcessHBClientResponse
- @note: Process the response received from client, update relevant structure data
- @param HANDLE
- @return EFrameworkunifiedStatus
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBProcessClientResponse(HANDLE f_hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "+");
- BOOL l_availability = FALSE;
-
- if (eFrameworkunifiedStatusOK != (l_eStatus = ReadMsg<BOOL>(f_hThread, l_availability))) {
- LOG_ERROR("ReadMsg()"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- }
-
- // find the subscriber...
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.find(FrameworkunifiedGetMsgSrc(f_hThread));
-
- // the l_SessionInfoIterator is set to the end then the subscriber is not in the map
- if (m_mapHbSessions.end() != l_SessionInfoIterator) {
- l_SessionInfoIterator->second.HeartBeatRetryCount = 0;
- l_SessionInfoIterator->second.fHeartBeatResponseReceived = TRUE;
- l_SessionInfoIterator->second.fHeartBeatRequestSent = FALSE;
- l_SessionInfoIterator->second.fisAvailability = l_availability;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__,
- "HeartBeat received from module: %s ", l_SessionInfoIterator->first.c_str());
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__,
- "Ignoring Heart Beat Response, Client: %s not found in the map!", FrameworkunifiedGetMsgSrc(f_hThread));
- }
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBPrintConnection
- @note: .Print registered client information
- @param VOID
- @return VOID
- *****************************************************************************/
-VOID CHeartBeatSessionHandler::HBPrintConnection() {
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- // find the subscriber...
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.begin();
- for (; l_SessionInfoIterator != m_mapHbSessions.end(); l_SessionInfoIterator++) {
- FRAMEWORKUNIFIEDLOG(ZONE_DEBUG_DUMP, __FUNCTION__,
- "HeartBeat Service is Connected to: %s via a Session: Running: %s ",
- l_SessionInfoIterator->second.szName.data(),
- (l_SessionInfoIterator->second.fRunning ? "YES" : "NO"));
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBPrintStack
- @note: .Print registered client information
- @param VOID
- @return VOID
- *****************************************************************************/
-VOID CHeartBeatSessionHandler::HBPrintStack(UI_32 f_MaxHeartBeatRetryCount) {
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- // find the subscriber...
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.begin();
- for (; l_SessionInfoIterator != m_mapHbSessions.end(); l_SessionInfoIterator++) {
- if (FALSE == l_SessionInfoIterator->second.fHeartBeatResponseReceived) {
- FRAMEWORKUNIFIEDLOG(ZONE_DEBUG_DUMP, __FUNCTION__,
- "HeartBeat Service is Connected to: %s via a Session: Running: %s ",
- l_SessionInfoIterator->second.szName.data(),
- (l_SessionInfoIterator->second.fRunning ? "YES" : "NO"));
- FRAMEWORKUNIFIEDLOG(ZONE_DEBUG_DUMP, __FUNCTION__,
- "Retry count (%d) within limit (%d), HeartBeatTimedout = %s",
- l_SessionInfoIterator->second.HeartBeatRetryCount,
- f_MaxHeartBeatRetryCount,
- (l_SessionInfoIterator->second.fHeartBeatTimedOut == TRUE ?
- "TRUE" : "FALSE"));
- }
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBCheckResponses
- @note: Check if all clients have replied to heartbeat query and generate report
- @param THbReportData Report structure to be filled
- @param UI_32 Heartbeat max retry count
- @return eFrameworkunifiedStatusFail if one or more modules have timed out, eFrameworkunifiedStatusOK otherwise.
- *****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBCheckResponses(
- THbReportData &f_tReportData, UI_32 f_MaxHeartBeatRetryCount,
- SI_32 f_HeartBeatIntervalRepeat, SI_32 f_ChkIndex) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
-
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.begin();
- memset(&f_tReportData, 0, sizeof(THbReportData));
-
- int index = 0;
-
- while (l_SessionInfoIterator != m_mapHbSessions.end()) {
- if (f_ChkIndex == (index % f_HeartBeatIntervalRepeat)) {
- // check if report queue is full
- // LCOV_EXCL_BR_START 6: f_tReportData.nNumOfModules can't more than SS_MAX_NUM_MODULES
- if (SS_MAX_NUM_MODULES <= f_tReportData.nNumOfModules) {
- // LCOV_EXCL_BR_STOP
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: SS_MAX_NUM_MODULES '%d' <= f_tReportData.nNumOfModules '%d'. See ss_system_manager_if.h.",
- SS_MAX_NUM_MODULES, f_tReportData.nNumOfModules);
-
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return eFrameworkunifiedStatusInvldBuf;
- }
-
-
- strncpy(f_tReportData.tModuleList[f_tReportData.nNumOfModules].ProcQueueName,
- l_SessionInfoIterator->first.c_str(),
- sizeof(f_tReportData.tModuleList[f_tReportData.nNumOfModules].ProcQueueName) - 1);
- f_tReportData.tModuleList[f_tReportData.nNumOfModules].HeartBeatRetryCount =
- l_SessionInfoIterator->second.HeartBeatRetryCount;
- f_tReportData.tModuleList[f_tReportData.nNumOfModules].ProcHBState = HB_STATUS_GOOD;
-
- if (TRUE == l_SessionInfoIterator->second.fHeartBeatResponseReceived) {
- l_SessionInfoIterator->second.fHeartBeatResponseReceived = FALSE;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__,
- "[%s] Heart Beat Response Received !",
- l_SessionInfoIterator->second.szName.c_str());
- } else if (TRUE == l_SessionInfoIterator->second.fHeartBeatTimedOut) {
- f_tReportData.tModuleList[f_tReportData.nNumOfModules].ProcHBState = HB_STATUS_TIMEOUT;
- } else if ((TRUE == l_SessionInfoIterator->second.fHeartBeatRequestSent)
- && (FALSE == l_SessionInfoIterator->second.fHeartBeatTimedOut)) {
- l_SessionInfoIterator->second.HeartBeatRetryCount++;
-
- if (l_SessionInfoIterator->second.HeartBeatRetryCount > f_MaxHeartBeatRetryCount) {
- l_eStatus = eFrameworkunifiedStatusFail;
- l_SessionInfoIterator->second.fHeartBeatTimedOut = TRUE;
- l_SessionInfoIterator->second.HeartBeatRetryCount = 0;
-
- f_tReportData.tModuleList[f_tReportData.nNumOfModules].ProcHBState = HB_STATUS_TIMEOUT;
-
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: Heart Beat Retry count of [%s] has crossed max limit (%d)."
- "Disabling sending HeartBeat query to it",
- l_SessionInfoIterator->second.szName.c_str(),
- f_MaxHeartBeatRetryCount);
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: [%s] has missed a Heart Beat. Retry count (%d) is within max retry limit (%d)",
- l_SessionInfoIterator->second.szName.c_str(),
- l_SessionInfoIterator->second.HeartBeatRetryCount,
- f_MaxHeartBeatRetryCount);
- }
- }
- }
-
- f_tReportData.nNumOfModules++;
- ++l_SessionInfoIterator;
- index++;
- }
-
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBSendRequest
- @note: .Sent heart beat query to the registered clients
- @param void
- @return EFrameworkunifiedStatus
-******************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBSendRequest(HANDLE f_hThread,
- SI_32 f_HeartBeatIntervalRepeat, SI_32 f_ChkIndex) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
-
- // Get session iterator
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.begin();
-
- if (l_SessionInfoIterator == m_mapHbSessions.end()) {
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__, "No Client has opened session with HeartBeat");
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
- }
-
- int index = 0;
-
- while (l_SessionInfoIterator != m_mapHbSessions.end()) {
- if (f_ChkIndex == (index % f_HeartBeatIntervalRepeat)) {
- if (l_SessionInfoIterator->second.hSession == NULL) { // LCOV_EXCL_BR_LINE 200:hSession must not be NULL
- l_SessionInfoIterator->second.hSession = FrameworkunifiedMcOpenSender(f_hThread, l_SessionInfoIterator->first.c_str());
- if (NULL == l_SessionInfoIterator->second.hSession) { // LCOV_EXCL_BR_LINE 200:hSession must not be NULL
- // LCOV_EXCL_START 200: hSession must not be NULL
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: FrameworkunifiedMcOpenSender(%s) returned NULL",
- l_SessionInfoIterator->first.c_str());
- // LCOV_EXCL_STOP
- } else {
- l_SessionInfoIterator->second.fRunning = TRUE;
- }
- }
-
- if ((NULL != l_SessionInfoIterator->second.hSession)
- && (FALSE == l_SessionInfoIterator->second.fHeartBeatTimedOut)) {
- if (eFrameworkunifiedStatusOK == (l_eStatus = FrameworkunifiedSendMsg(l_SessionInfoIterator->second.hSession, SS_HEARTBEAT_REQUEST, 0, NULL))) { // LCOV_EXCL_BR_LINE 5:NSFW's error // NOLINT(whitespace/line_length)
- /// TODO review if we are required to return failure if sending message to one process failed.
- l_SessionInfoIterator->second.fHeartBeatResponseReceived = FALSE;
- l_SessionInfoIterator->second.fHeartBeatRequestSent = TRUE;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__,
- "HeartBeat Request sent to : %s", l_SessionInfoIterator->first.c_str());
- } else {
- // LCOV_EXCL_START 5:NSFW's error
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: FrameworkunifiedSendMsg(%s, SS_HEARTBEAT_REQUEST) errored: %d/'%s'",
- l_SessionInfoIterator->first.c_str(), l_eStatus,
- GetStr(l_eStatus).c_str());
- // LCOV_EXCL_STOP
- }
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_INFO, __FUNCTION__,
- " HeartBeat Request was not sent to '%s', timeout is '%s'",
- l_SessionInfoIterator->first.c_str(),
- (l_SessionInfoIterator->second.fHeartBeatTimedOut == TRUE ? "TRUE" : "FALSE"));
- }
- }
- ++l_SessionInfoIterator;
- index++;
- }
-
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBDeleteRegisteredClientEntry
- @note: .
- @param
- @return EFrameworkunifiedStatus
-******************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBDeleteRegisteredClientEntry(HANDLE f_hThread, PSTR pQueueName) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- SubscriberName tQueuename(pQueueName);
-
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Looking for %s.", tQueuename.c_str());
-
- HbSessionIter l_SessionInfoIterator = m_mapHbSessions.find(tQueuename);
-
- if (m_mapHbSessions.end() != l_SessionInfoIterator) {
- // Close the session handle
- if (NULL != l_SessionInfoIterator->second.hSession) { // LCOV_EXCL_BR_LINE 200:hSession must not be NULL when tQueuename exists. // NOLINT(whitespace/line_length)
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != (l_eStatus = FrameworkunifiedMcClose(l_SessionInfoIterator->second.hSession))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedMcClose()"); // LCOV_EXCL_LINE 4: NSFW error case.
- }
- l_SessionInfoIterator->second.hSession = NULL;
- }
- m_mapHbSessions.erase(tQueuename);
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Deleting '%s' Successful ", tQueuename.c_str());
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
- "%s not found in Heart beat client list", tQueuename.c_str());
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBAvailableCheck
- @note: .
- @param
- @return EFrameworkunifiedStatus
-******************************************************************************/
-EFrameworkunifiedStatus CHeartBeatSessionHandler::HBAvailableCheck(THbAvailCheck &check) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- BOOL isOk = TRUE;
-
- std::list<std::string> ngList;
- for (HbSessionIter ite = m_mapHbSessions.begin(); ite != m_mapHbSessions.end(); ite++) {
- if (ite->second.fisAvailability == FALSE) {
- ngList.push_back(ite->first);
- // Notify Last Service as Representative
- snprintf(check.serviceName, SS_SM_HB_MAX_PROC_NAME_SIZE, "%s", ite->first.c_str());
- isOk = FALSE;
- }
- }
-
- if (isOk == FALSE) {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "********* AVAILABILITY CHECK ERROR **********");
- fprintf(stderr, "HBOnAvailCheckRequest/********* AVAILABILITY CHECK ERROR **********\n"); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- } else {
- FRAMEWORKUNIFIEDLOG(ZONE_STATE, __FUNCTION__, "********* AVAILABILITY CHECK OK **********");
- fprintf(stderr, "HBOnAvailCheckRequest/********* AVAILABILITY CHECK OK **********\n"); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- }
-
- for (std::list<std::string>::iterator ite = ngList.begin(); ite != ngList.end(); ite++) {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " %s", ite->c_str());
- fprintf(stderr, " %s\n", ite->c_str()); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- }
-
- check.isOk = isOk;
-
- return l_eStatus;
-}
diff --git a/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp b/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp
deleted file mode 100755
index 19d124a..0000000
--- a/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- * @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_SystemManager
-/// \brief This file provides support for the application heartbeat system.
-///
-///////////////////////////////////////////////////////////////////////////////
-#include <native_service/frameworkunified_application.h>
-#include <native_service/frameworkunified_framework_if.h>
-#include <native_service/frameworkunified_service_protocol.h>
-#include <system_service/ss_heartbeat_notifications.h>
-#include <system_service/ss_heartbeat_service_protocol.h>
-#include <system_service/ss_power_service_notifications.h>
-#include <system_service/ss_services.h>
-#include <system_service/ss_templates.h>
-
-#include "ss_hb_thread.h"
-#include "ss_sm_systemmanagerlog.h"
-#include "ss_system_manager.h"
-
-/// Total Timers used by Heart Beat Thread
-/// This value is used for creating timers
-#define HBMaxTimers 1
-#define HBTimerInterval 1
-
-template<typename C, eFrameworkunifiedStatus (C::*M)(HANDLE)> EFrameworkunifiedStatus HBThreadCallback(HANDLE hThread) {
- EFrameworkunifiedStatus eStatus = eFrameworkunifiedStatusOK;
- C * pObj = static_cast<C *>(FrameworkunifiedGetThreadSpecificData(hThread));
- if (pObj) { // LCOV_EXCL_BR_LINE 4:pObj must not be NULL
- eStatus = (pObj->*M)(hThread);
- }
- return eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: CHeartBeatThread
- @note: Constructor
-*****************************************************************************/
-CHeartBeatThread::CHeartBeatThread(HANDLE f_hThread) :
- m_oTimerCtrl(HBMaxTimers)
- , m_HBTimerID(0)
- , m_NextChkIndex(0)
- , m_hThread(f_hThread) { // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- std::memset(&m_HBConfigParams, 0, sizeof(m_HBConfigParams));
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: ~CHeartBeatThread
- @note: Destructor
-*****************************************************************************/
-CHeartBeatThread::~CHeartBeatThread() { // LCOV_EXCL_START 14: Resident process, not called by NSFW
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
-}
-// LCOV_EXCL_STOP
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBPublishAvailabilityStatus
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @param BOOL - The Availability Status to be published
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBPublishAvailabilityStatus(HANDLE hThread, BOOL f_bAvailabiltyStatus) {// LCOV_EXCL_START 14: Resident process, not called by NSFW
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- // Send availability notification to users
- l_eStatus = FrameworkunifiedPublishServiceAvailability(hThread, f_bAvailabiltyStatus);
- char l_cBuf[100] = { 0 };
- snprintf(l_cBuf,
- sizeof(l_cBuf),
- "FrameworkunifiedPublishServiceAvailability(%s)",
- GetStr(f_bAvailabiltyStatus).c_str());
- LOG_STATUS(l_eStatus, l_cBuf); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
-
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}// LCOV_EXCL_STOP
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnStartThread
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnStartThread(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- UI_32 l_DataLen = FrameworkunifiedGetMsgLength(hThread); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
-
- if ((sizeof(UI_32) + (SS_MAX_NUM_MODULES * SS_SM_HB_MAX_PROC_NAME_SIZE) + sizeof(m_HBConfigParams)) < l_DataLen) {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: message buffer sizes invalid:received %d", l_DataLen);
- return eFrameworkunifiedStatusInvldParam;
- }
-
- CHAR l_Data[l_DataLen]; // NOLINT
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK !=
- (l_eStatus = FrameworkunifiedGetMsgDataOfSize(hThread, (PVOID) & l_Data, static_cast<UI_32>(sizeof(l_Data)), eSMRRelease))) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__,
- " Error: FrameworkunifiedGetMsgDataOfSize() errored: 0x%x", l_eStatus);
- return l_eStatus;
- }
-
- CHAR* p_Data = &l_Data[0];
- UI_32 list_num;
- memcpy(&m_HBConfigParams, p_Data, sizeof(m_HBConfigParams));
- p_Data = p_Data + sizeof(m_HBConfigParams);
- memcpy(&list_num, p_Data, sizeof(list_num));
- p_Data = p_Data + sizeof((list_num));
-
- for (UI_32 i = 0; i < list_num; i++) {
- SubscriberName l_Subscriber = p_Data; // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != m_oSessionHandler.HBEntrySubscriber(l_Subscriber)) {
- // LCOV_EXCL_BR_STOP
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: HBEntrySubscriber");
- }
- p_Data = p_Data + SS_SM_HB_MAX_PROC_NAME_SIZE;
- }
-
- if (0 == m_HBConfigParams.ApplicationHeartBeatIntervalInitial) {
- FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
- " Warning: Heart beat disabled via configuration file interval "
- "parameter set to 0.");
- } else if (0 != m_HBTimerID) {
- FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__,
- " Warning: Heart Beat Timer ID '%d' already created, ignoring "
- "repeated Heart Beat Start command.", m_HBTimerID);
- } else {
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK !=
- (l_eStatus = FrameworkunifiedRegisterServiceAvailabilityNotification(hThread, NTFY_HeartBeatAvailability))) {
- // LCOV_EXCL_BR_STOP
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("FrameworkunifiedRegisterServiceAvailabilityNotification(" NTFY_HeartBeatAvailability ")");
- // LCOV_EXCL_STOP
- }
- else {
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__,
- "Service availability %s Registered SOURCE : %s",
- NTFY_HeartBeatAvailability,
- FrameworkunifiedGetAppName(hThread));
-
- // Publish Heart Beat Availability
- // LCOV_EXCL_BR_START 4: NSFW error case.
- if (eFrameworkunifiedStatusOK != (l_eStatus = HBPublishAvailabilityStatus(hThread, TRUE))) {
- // LCOV_EXCL_BR_STOP
- // LCOV_EXCL_START 4: NSFW error case.
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- LOG_ERROR("HBPublishAvailabilityStatus(TRUE)");
- // LCOV_EXCL_STOP
- }
- }
- // Create Heart Beat app monitor
- m_HBTimerID = m_oTimerCtrl.CreateTimer(HBThreadCallback<CHeartBeatThread, &CHeartBeatThread::HBOnTimerExpiry>); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- if (0 == m_HBTimerID) { // LCOV_EXCL_BR_LINE 8: m_HBTimerID can't be 0
- AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: Heart Beat Timer ID creation failed.");
- // return eFrameworkunifiedStatusFail;
- } else {
- // Start Heart Beat app monitor
- m_oTimerCtrl.StartTimer(m_HBTimerID,
- m_HBConfigParams.ApplicationHeartBeatIntervalInitial,
- 0,
- HBTimerInterval,
- 0); // LCOV_EXCL_BR_LINE 11:unexpected branch // NOLINT(whitespace/line_length)
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Initial Heart Beat Timer created for %d seconds interval",
- m_HBConfigParams.ApplicationHeartBeatIntervalInitial);
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Repetitive Heart Beat Timer created for %d seconds interval",
- m_HBConfigParams.ApplicationHeartBeatIntervalRepeat);
- }
- }
-
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnStopThread
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnStopThread(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
- if (0 != m_HBTimerID) {
- // Stop HeartBeat timer
- m_oTimerCtrl.StopTimer(m_HBTimerID);
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Timer '%d' stopped", m_HBTimerID);
- }
- else {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: 'm_HBTimerID' is '0'; unable to stop timer");
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HeartBeatTimerInit
- @note:
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HeartBeatTimerInit(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- m_oTimerCtrl.Initialize(hThread);
-
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HeartBeatTimersDelete
- @note:
- @param void
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HeartBeatTimersDelete() {// LCOV_EXCL_START 14: Resident process, not called by NSFW
- EFrameworkunifiedStatus l_eStatus;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- if (0 == m_HBTimerID) {
- FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, " Error: 'm_HBTimerID' is '0'; unable to delete timer");
- l_eStatus = eFrameworkunifiedStatusInvldParam;
- } else {
- // Delete Heart Beat timer
- UI_32 l_TimerID = m_oTimerCtrl.DeleteTimer(m_HBTimerID);
- if (0 == l_TimerID) {
- l_eStatus = eFrameworkunifiedStatusDbRecNotFound;
- LOG_ERROR("m_oTimerCtrl.DeleteTimer(m_HBTimerID)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- } else {
- l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, " Successful");
- }
- m_HBTimerID = 0;
- }
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}// LCOV_EXCL_STOP
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBCheckHeartBeatResponses
- @note: This function checks heartbeat responses and generates a summary
- report for System Manager if one or more modules have failed to
- reply within the configured maximum number of heartbeat retries.
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBCheckHeartBeatResponses(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus;
- THbReportData f_tReportData;
- FRAMEWORKUNIFIEDLOG(ZONE_PERIODIC_FUNC, __FUNCTION__, "+");
-
- l_eStatus = m_oSessionHandler.HBCheckResponses(f_tReportData,
- m_HBConfigParams.MaxHeartBeatRetryCount,
- m_HBConfigParams.ApplicationHeartBeatIntervalRepeat,
- m_NextChkIndex);
- if (l_eStatus == eFrameworkunifiedStatusFail) { // Send a heartbeat report ONLY if a heartbeat failure is detected.
- // send report to system manager
- l_eStatus = FrameworkunifiedSendParent(hThread,
- SS_HEARTBEAT_ERROR_DETECTED,
- sizeof(f_tReportData),
- &f_tReportData);
- LOG_STATUS_IF_ERRORED(l_eStatus, "FrameworkunifiedSendParent(SS_HEARTBEAT_ERROR_DETECTED)"); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- }
- FRAMEWORKUNIFIEDLOG0(ZONE_PERIODIC_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBSendRequest
- @note: .
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBSendRequest(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus;
-
- CALL_AND_LOG_STATUS_IF_ERRORED( // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
- m_oSessionHandler.HBSendRequest(hThread, m_HBConfigParams.ApplicationHeartBeatIntervalRepeat, m_NextChkIndex)); // LCOV_EXCL_BR_LINE 15: marco defined in ss_templates.h // NOLINT(whitespace/line_length)
-
- m_NextChkIndex++;
- if (m_HBConfigParams.ApplicationHeartBeatIntervalRepeat <= m_NextChkIndex) {
- m_NextChkIndex = 0;
- }
-
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnPrintConnections
- @note: .Prints all active sessions connected to HeartBeat
- @param HANDLE hThread
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnPrintConnections(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- m_oSessionHandler.HBPrintConnection();
-
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}
-
-/*****************************************************************************
- @ingroup: SS_SystemManager
- @brief: HBOnPrintStack
- @note: . Prints all sessions connected to HeartBeat
- @param HANDLE - Handle to message queue of HeartBeat Service.
- @return EFrameworkunifiedStatus
-*****************************************************************************/
-EFrameworkunifiedStatus CHeartBeatThread::HBOnPrintStack(HANDLE hThread) {
- EFrameworkunifiedStatus l_eStatus = eFrameworkunifiedStatusOK;
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+");
-
- m_oSessionHandler.HBPrintStack(m_HBConfigParams.MaxHeartBeatRetryCount);
-
- FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-");
- return l_eStatus;
-}