summaryrefslogtreecommitdiffstats
path: root/video_in_hal/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'video_in_hal/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp')
-rwxr-xr-xvideo_in_hal/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp355
1 files changed, 0 insertions, 355 deletions
diff --git a/video_in_hal/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp b/video_in_hal/systemservice/system_manager/server/src/heartbeat/ss_hb_thread.cpp
deleted file mode 100755
index 19d124a..0000000
--- a/video_in_hal/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;
-}