diff options
Diffstat (limited to 'video_in_hal/nsframework/notification_persistent_service/server/src/ns_npp.cpp')
-rwxr-xr-x | video_in_hal/nsframework/notification_persistent_service/server/src/ns_npp.cpp | 1149 |
1 files changed, 0 insertions, 1149 deletions
diff --git a/video_in_hal/nsframework/notification_persistent_service/server/src/ns_npp.cpp b/video_in_hal/nsframework/notification_persistent_service/server/src/ns_npp.cpp deleted file mode 100755 index 25b6443..0000000 --- a/video_in_hal/nsframework/notification_persistent_service/server/src/ns_npp.cpp +++ /dev/null @@ -1,1149 +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_NS_NPPService -/// \brief -/// -/// -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Include Files -//////////////////////////////////////////////////////////////////////////////////////////////////// -#include <time.h> -#include <errno.h> -#include <fcntl.h> -#include <stdlib.h> -#include <dirent.h> -#include <sys/stat.h> -#include <sys/timeb.h> -#include <sys/types.h> - -#include <native_service/frameworkunified_sm_leafstate.h> -#include <native_service/frameworkunified_multithreading.h> -#include <native_service/ns_np_service_protocol.h> - -#include <string> -#include <vector> - -#include <native_service/ns_np_service_nor_persistence_internal.h> -#include "app_states.h" -#include "ns_npp.h" -#include "ns_npp_types.h" -#include "ns_npp_notificationpersistentservicelog.h" -#include "ns_npp_threads.h" -#include "ns_npp_copy_worker.h" -#include "ns_npp_fs_directory.h" -#include "ns_npp_persist_folder.h" -#include "ns_npp_persistent_data.h" -#include "ns_npp_persistence_manager.h" -#include "ns_npp_notification_manager.h" -#include "ns_npp_personalization_manager.h" -#include "ns_npp_nor_persistence_worker_thread.h" - -#define NPP_VERSION_INVALID 255 -#define NPP_VERSION_0 0 -#define NPP_VERSION_1 1 - -#define NPP_CONNECT_DEFAULTSTATE(parent, child) \ - FrameworkunifiedConnect(l_p## parent, l_p## child, TRUE); - -#define NPP_CONNECT_STATE(parent, child) \ - FrameworkunifiedConnect(l_p## parent, l_p## child); - -#define NPP_CONNECT_DEFERREDEVENT(state, eventid, reaction) \ - FrameworkunifiedConnect(l_p## state, _## eventid, l_pTrn## reaction, #eventid, TRUE); \ - -#define NPP_CONNECT_EVENT(state, eventid, reaction) \ - FrameworkunifiedConnect(l_p## state, _## eventid, l_pTrn## reaction, #eventid); - -#define NPP_CONNECTROOT(state) \ - FrameworkunifiedConnect(l_p## state); - -#define NPP_CONNECT_ORTHOGONAL_REGION(orthogonalstate, orthogonalregion) \ - FrameworkunifiedConnectOrthogonal(l_p## orthogonalstate, l_p## orthogonalregion); - -#define NPP_CREATE_STATE(class_name) \ - C## class_name *l_p## class_name = new (std::nothrow) C## class_name(#class_name); - -#define NPP_PRINTSTATEMACHINE() \ - FrameworkunifiedPrintAllStates(); - -// typedef of vector of CNotificationsToPersist -typedef std::vector<CNotificationsToPersist *> Persistent_Notification_List_Type; - -// iterator for CNotificationsToPersist vector -typedef Persistent_Notification_List_Type::iterator Persistent_Notification_List_Iterator; - -// initialize static variables -SI_32 CNSNPP::m_siWriteThreadPrio = NS_NPP_WRITE_THREAD_PRIO; -SI_32 CNSNPP::m_siReadThreadPrio = NS_NPP_READ_THREAD_PRIO; -SI_32 CNSNPP::m_siImmediatePersistenceThreadPrio = NS_NPP_IMMEDIATE_PERSIST_THREAD_PRIO; -UI_16 CNSNPP::m_siCRCCheckCount = 0; - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// CNSNPP -/// Class Constructor -//////////////////////////////////////////////////////////////////////////////////////////////////// -CNSNPP::CNSNPP(PVOID f_happ) : CFrameworkunifiedHSM(f_happ), - m_cReadThreadName(NS_NPP_READ_THREAD_NAME), - m_cWriteThreadName(NS_NPP_WRITE_THREAD_NAME), - m_cImmediatePersistenceThreadName(NS_NPP_IMMEDIATE_PERSIST_THREAD_NAME) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - m_hNSReadThread = NULL; - m_hNSWriteThread = NULL; - m_hNSImmediatePersistenceThread = NULL; - - m_pNotificationManager = NULL; - m_pPersonalizationManager = NULL; - m_pPersistenceManager = NULL; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// CNSNPP -/// Class Destructor -//////////////////////////////////////////////////////////////////////////////////////////////////// -CNSNPP::~CNSNPP() { // LCOV_EXCL_START 200: cannot test code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - if (NULL != m_pNotificationManager) { - delete m_pNotificationManager; - m_pNotificationManager = NULL; - } - - if (NULL != m_pPersonalizationManager) { - delete m_pPersonalizationManager; - m_pPersonalizationManager = NULL; - } - if (NULL != m_pPersistenceManager) { - delete m_pPersistenceManager; - m_pPersistenceManager = NULL; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} -// LCOV_EXCL_STOP - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// Init -/// This function is used to allocate dynamic memory for member variables of this class after -/// creation of object. -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::Init(HANDLE f_happ) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FrameworkunifiedProtocolEvent ns_npp_internal_protocol_handlers[] = { - {CP_WRK_NTFY, EVENT(evNPReleaseLoadAck)} - }; - - FrameworkunifiedProtocolEvent immediate_thread_protocol_handlers[] = { - {NOR_PERSISTENCE_ONSHUTDOWN_ACK, EVENT(evNPNorShutdownAck)}, - }; - - UI_32 l_uiNPPVersion = NPP_VERSION_INVALID; - - // initialize Notification Manager - m_pNotificationManager = new(std::nothrow) CNotificationManager(); - // initialize Personalization Manager - m_pPersonalizationManager = new(std::nothrow) CnotificationpersistentservicePersonalizationManager(); - // initialize Persistence Manager - m_pPersistenceManager = new(std::nothrow) CPersistenceManager(); - - if ((NULL == f_happ) || (NULL == m_pNotificationManager) || (NULL == m_pPersonalizationManager) || (NULL == m_pPersistenceManager)) { // LCOV_EXCL_BR_LINE 5: f_happ, m_pNotificationManager, m_pPersonalizationManager, m_pPersistenceManager can't be NULL // NOLINT[whitespace/line_length] - // LCOV_EXCL_START 5: f_happ, m_pNotificationManager, m_pPersonalizationManager, m_pPersistenceManager can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "f_happ or m_pNotificationManager or m_pPersonalizationManager or m_pPersistenceManager is NULL"); - - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } else { - if ((eFrameworkunifiedStatusOK != FrameworkunifiedAttachCallbackToDispatcher( // LCOV_EXCL_BR_LINE 4: NSFW error case - f_happ, m_cReadThreadName.c_str(), - CP_WRK_ACK_CMD_COMPLETE, - NPServiceOnCpWorkerAckCmd)) - || (eFrameworkunifiedStatusOK != FrameworkunifiedAttachCallbackToDispatcher( - f_happ, m_cWriteThreadName.c_str(), - CP_WRK_ACK_CMD_COMPLETE, - NPServiceOnCpWorkerAckCmd)) - || (eFrameworkunifiedStatusOK != FrameworkunifiedAttachHSMEventsToDispatcher( - f_happ, m_cWriteThreadName.c_str(), - ns_npp_internal_protocol_handlers, - static_cast<UI_32>(_countof(ns_npp_internal_protocol_handlers)))) - || (eFrameworkunifiedStatusOK != FrameworkunifiedAttachHSMEventsToDispatcher( - f_happ, m_cReadThreadName.c_str(), - ns_npp_internal_protocol_handlers, - static_cast<UI_32>(_countof(ns_npp_internal_protocol_handlers)))) - || (eFrameworkunifiedStatusOK != FrameworkunifiedAttachHSMEventsToDispatcher( - f_happ, m_cImmediatePersistenceThreadName.c_str(), - immediate_thread_protocol_handlers, - static_cast<UI_32>(_countof(immediate_thread_protocol_handlers))))) { - // LCOV_EXCL_START 4: NSFW error case. - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Attaching callbacks and events failed for protocols CP_WRK_ACK_CMD_COMPLETE, CP_WRK_NTFY"); - l_estatus = eFrameworkunifiedStatusFail; - // LCOV_EXCL_STOP - } else { - l_estatus = CreateAndStartChildThreads(f_happ); - - if (eFrameworkunifiedStatusOK == l_estatus) { // LCOV_EXCL_BR_LINE 4: NSFW error case - if (NPP_VERSION_INVALID != (l_uiNPPVersion = GetNSNPPVersion())) { // LCOV_EXCL_BR_LINE 6: l_uiNPPVersion can't be NPP_VERSION_INVALID // NOLINT[whitespace/line_length] - if (NPP_VERSION_0 == l_uiNPPVersion) { - l_estatus = SwitchToFileStructureVersion1(l_uiNPPVersion + 1); - - l_estatus = SwitchToFileStructureVersion2(l_uiNPPVersion + 2); - } else if (NPP_VERSION_1 == l_uiNPPVersion) { // LCOV_EXCL_BR_LINE 200: cannot test code in init sequence - // LCOV_EXCL_START 200: cannot test code in init sequence - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = SwitchToFileStructureVersion2(l_uiNPPVersion + 1); - - // send the message to write worker thread to delete the persistent - /// which was requested for deletion during previous shutdown - l_estatus = FrameworkunifiedSendChild(f_happ, m_hNSWriteThread, CMD_DELETE_OLD_DATA, 0, NULL); - // LCOV_EXCL_STOP - } else { - // send the message to write worker thread to delete the persistent - /// which was requested for deletion during previous shutdown - l_estatus = FrameworkunifiedSendChild(f_happ, m_hNSWriteThread, CMD_DELETE_OLD_DATA, 0, NULL); - } - - // Try to load persisted notification data - NotificationpersistentserviceLoadPersistentNotificationData(eFrameworkunifiedPersistedStateVar); - - // load immediate persistence data as the respective thread is now started. - NotificationpersistentserviceLoadPersistentNotificationData(eFrameworkunifiedImmediatePersistedStateVar); - } else { - // LCOV_EXCL_START 6: l_uiNPPVersion can't be NPP_VERSION_INVALID - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Invalid version of NPPService"); - // LCOV_EXCL_STOP - } - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error in creating child threads of NPPService"); // LCOV_EXCL_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - } - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// DeInit -/// This function is used to deinitialize the NPP object -//////////////////////////////////////////////////////////////////////////////////////////////////// -VOID CNSNPP::DeInit(HANDLE f_happ) { // LCOV_EXCL_START 200: cannot test code - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - if (NULL != m_pNotificationManager) { - delete m_pNotificationManager; - m_pNotificationManager = NULL; - } - - if (NULL != m_pPersonalizationManager) { - delete m_pPersonalizationManager; - m_pPersonalizationManager = NULL; - } - - if (NULL != m_pPersistenceManager) { - delete m_pPersistenceManager; - m_pPersistenceManager = NULL; - } - - if (NULL != f_happ) { - EFrameworkunifiedStatus eStatus; - - if (NULL != m_hNSReadThread) { - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedStopChildThread(f_happ, m_hNSReadThread, 0, NULL))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedStopChildThread Read Thread Failed. status=%d", eStatus); - } - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedDestroyChildThread(f_happ, m_hNSReadThread))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedDestroyChildThread Read Thread Failed. status=%d", eStatus); - } - m_hNSReadThread = NULL; - } - - if (NULL != m_hNSWriteThread) { - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedStopChildThread(f_happ, m_hNSWriteThread, 0, NULL))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedStopChildThread Write Thread Failed. status=%d", eStatus); - } - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedDestroyChildThread(f_happ, m_hNSWriteThread))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedDestroyChildThread Write Thread Failed. status=%d", eStatus); - } - m_hNSWriteThread = NULL; - } - - if (NULL != m_hNSImmediatePersistenceThread) { - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedStopChildThread(f_happ, m_hNSImmediatePersistenceThread, 0, NULL))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedStopChildThread ImmidatePersistence Thread Failed. status=%d", eStatus); - } - if (eFrameworkunifiedStatusOK != (eStatus = FrameworkunifiedDestroyChildThread(f_happ, m_hNSImmediatePersistenceThread))) { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "FrameworkunifiedDestroyChildThread ImmidatePersistence Thread Failed. status=%d", eStatus); - } - m_hNSImmediatePersistenceThread = NULL; - } - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); -} -// LCOV_EXCL_STOP - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// SwitchToFileStructureVersion1 -/// Copy all the user data from old persistent path to new persistent path i.e. UserData folder -//////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::SwitchToFileStructureVersion1(const UI_32 f_uinppversion) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - std::string l_cSrcPath = ""; - std::string l_cDestPath = ""; - - std::string l_cNSNPSPath = CPersistence::GetStoragePath(); - std::string l_cUserDataPath = ""; - - if (CFSDirectory::DoesDirecotryExist(l_cNSNPSPath)) { // LCOV_EXCL_BR_LINE 6: l_cNSNPSPath must exist - DIR *l_pdir = NULL; - - struct dirent *l_pdirent = NULL; - - l_pdir = opendir(l_cNSNPSPath.c_str()); - - if (NULL != l_pdir) { // LCOV_EXCL_BR_LINE 4: NSFW error case - if (l_cNSNPSPath[l_cNSNPSPath.length() - 1] != '/') { // LCOV_EXCL_BR_LINE 6: l_cNSNPSPath must has '/' - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_cNSNPSPath.append("/"); // LCOV_EXCL_LINE 6: l_cNSNPSPath must has '/' - } - - // set the userdata folder path - l_cUserDataPath.assign(l_cNSNPSPath); - l_cUserDataPath.append(USERDATADIR); - l_cUserDataPath.append(ALLUSERAPPDATADIR); - - // create the userdata directory - if (!CFSDirectory::DoesDirecotryExist(l_cUserDataPath)) { - l_estatus = CFSDirectory::CreateDirectory(l_cUserDataPath); - } - - // if directory successfully created or is already present on target - if (eFrameworkunifiedStatusOK == l_estatus) { // LCOV_EXCL_BR_LINE 6: l_estatus must be eFrameworkunifiedStatusOK - while (NULL != (l_pdirent = readdir(l_pdir))) { - if (0 != std::strcmp(l_pdirent->d_name, ".") && - 0 != std::strcmp(l_pdirent->d_name, "..") && - 0 != std::strcmp(l_pdirent->d_name, AppName) && - 0 != std::strcmp(l_pdirent->d_name, USERDATA)) { - l_cSrcPath.assign(l_cNSNPSPath.c_str()); - l_cSrcPath.append(l_pdirent->d_name); - - if (CFSDirectory::IsDirectory(l_cSrcPath)) { // LCOV_EXCL_BR_LINE 6: cannot test in init sequence - l_cDestPath.assign(l_cUserDataPath); - l_cDestPath.append(l_pdirent->d_name); - - // move the old app user data to the UserData fodler - if (0 != rename(l_cSrcPath.c_str(), l_cDestPath.c_str())) { // LCOV_EXCL_BR_LINE 6: rename must return ok // NOLINT[whitespace/line_length] - // LCOV_EXCL_START 6: rename must return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error renaming folder %s to %s", - l_cSrcPath.c_str(), l_cDestPath.c_str()); - // LCOV_EXCL_STOP - } - } - } - } - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to create directory:: %s", l_cDestPath.c_str()); // LCOV_EXCL_LINE 6: l_estatus must be eFrameworkunifiedStatusOK // NOLINT[whitespace/line_length] - } - - closedir(l_pdir); // close the directory - } else { - // LCOV_EXCL_START 4: NSFW error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "l_pdir is NULL"); - // LCOV_EXCL_STOP - } - } - - l_estatus = SetNSNPPVersion(static_cast<UI_8>(f_uinppversion)); - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////// -/// SwitchToFileStructureVersion2 -/// Move immediate notification data files from IMMEDIATE_PERSISTENCE_STORAGE_V1 to -/// IMMEDIATE_PERSISTENCE_STORAGE_V2/AllUserAppData/UserData -//// //////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::SwitchToFileStructureVersion2(const UI_32 f_uinppversion) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - // immediate notification persistent path for NPPService version 1 - std::string l_cSrcDir = IMMEDIATE_PERSISTENCE_STORAGE_V1; - - // immediate notification persistent path for NPPService version 2 - std::string l_cDestDir = IMMEDIATE_PERSISTENCE_STORAGE_V2; - l_cDestDir.append(USERDATADIR); - l_cDestDir.append(ALLUSERAPPDATADIR); - l_cDestDir.append(IMMEDIATEDATADIR); - - if (eFrameworkunifiedStatusOK == (l_estatus = SynchronousMovePersistentData(l_cSrcDir.c_str(), l_cDestDir.c_str()))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - if (!CFSDirectory::RemoveDirectory(l_cSrcDir)) { // LCOV_EXCL_BR_LINE 6: cannot test in init sequence - FRAMEWORKUNIFIEDLOG(ZONE_WARN, __FUNCTION__, "Error deleting old immediate pers. dir %s", l_cSrcDir.c_str()); - } - - l_estatus = SetNSNPPVersion(static_cast<UI_8>(f_uinppversion)); - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "SynchronousMovePersistentData faiure, status=%d", l_estatus); // LCOV_EXCL_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -/////////////////////////////////////////////////////////////////////////////////////////// -/// GetNSNPPVersion -/// Get the version of NSNPP from version.txt -/////////////////////////////////////////////////////////////////////////////////////////// -UI_32 CNSNPP::GetNSNPPVersion() { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - UI_32 l_uiVersion = NPP_VERSION_INVALID; - CHAR l_cVerStr[3] = {}; - FILE *l_pFile = NULL; - - std::string l_cVersion = CPersistence::GetStoragePath(); - if (l_cVersion[l_cVersion.length() - 1] != '/') { // LCOV_EXCL_BR_LINE 6: must has '/' - l_cVersion += "/"; - } - l_cVersion.append(VERSION_TXT); - - if (NULL != (l_pFile = fopen(l_cVersion.c_str(), "r"))) { - // read the version from file - if (NULL == fgets(l_cVerStr, 2, l_pFile)) { // LCOV_EXCL_BR_LINE 6: can't return NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "File empty: %s", l_cVersion.c_str()); // LCOV_EXCL_LINE 6: can't return NULL - } else { - errno = EOK; - l_uiVersion = static_cast<UI_32>(strtol(l_cVerStr, NULL, 10)); - - if (EOK != errno) { // LCOV_EXCL_BR_LINE 6: errno always is EOK - // LCOV_EXCL_START 6: errno always is EOK - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_NS_ERR, __FUNCTION__, "Error converting string %s to hex, errno=%d", l_cVerStr, errno); - l_uiVersion = NPP_VERSION_0; - // LCOV_EXCL_STOP - } - } - - fclose(l_pFile); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to open file: %s, errno=%d", l_cVersion.c_str(), errno); - l_uiVersion = NPP_VERSION_0; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_uiVersion; -} -/////////////////////////////////////////////////////////////////////////////////////////// -/// Syncfs -/// Syncfs is carried out. -/// -/// \param -/// -/// \return EFrameworkunifiedStatus -/// EFrameworkunifiedStatus - Returns status of operation -/// -/////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::Syncfs() { - int dfd; - - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - std::string l_cPath = CPersistence::GetStoragePath(); - - // create the file - dfd = open(l_cPath.c_str(), O_RDONLY | O_DIRECTORY); - if (-1 != dfd) { - // syncfs() - if (syncfs(dfd) < 0) { // LCOV_EXCL_BR_LINE 5: syncfs's error case. - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to syncfs: %s errno=%d", l_cPath.c_str(), errno); // LCOV_EXCL_LINE 5: syncfs's error case. // NOLINT[whitespace/line_length] - } - close(dfd); - } else { - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to open file: %s serrno=%d", l_cPath.c_str(), errno); - l_estatus = eFrameworkunifiedStatusNullPointer; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} -/////////////////////////////////////////////////////////////////////////////////////////// -/// SetNSNPPVersion -/// Set the version of NSNPP in version.txt -/////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::SetNSNPPVersion(UI_8 f_uiversion) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - FILE *l_pFile = NULL; - - std::string l_cVersion = CPersistence::GetStoragePath(); - if (l_cVersion[l_cVersion.length() - 1] != '/') { // LCOV_EXCL_BR_LINE 6: must has '/' - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_cVersion += "/"; // LCOV_EXCL_LINE 6: must has '/' - } - if (!CFSDirectory::DoesDirecotryExist(l_cVersion)) { - CFSDirectory::CreateDirectory(l_cVersion); - } - - l_cVersion.append(VERSION_TXT); - - // create the file and write - l_pFile = fopen(l_cVersion.c_str(), "w"); - if (NULL != l_pFile) { // LCOV_EXCL_BR_LINE 6: l_pFile can't be NULL - // write the version to file - fprintf(l_pFile, "%d", f_uiversion); - fclose(l_pFile); - } else { - // LCOV_EXCL_START 6: l_pFile can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Unable to open file: %s", l_cVersion.c_str()); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// FrameworkunifiedCreate -/// In this function, states and events of StateMachine are created and connected. -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::FrameworkunifiedCreate(PVOID f_peventdata) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - - // ========Create states - NPP_CREATE_STATE(sNotificationpersistentserviceNPPRoot) - NPP_CREATE_STATE(sNotificationpersistentserviceNPPStart) - NPP_CREATE_STATE(sNotificationpersistentserviceNPPError) - - CREATE_ORTHOGONALREGION(sNotificationpersistentservicePersistence) - CREATE_ORTHOGONALREGION(sNotificationpersistentserviceShutdown) - CREATE_ORTHOGONALREGION(sNotificationpersistentserviceNotification) - - NPP_CREATE_STATE(sNotificationpersistentservicePersistenceReady) - NPP_CREATE_STATE(sNotificationpersistentservicePersistenceError) - - NPP_CREATE_STATE(sNotificationpersistentserviceNotificationReady) - NPP_CREATE_STATE(sNotificationpersistentserviceNotificationError) - - NPP_CREATE_STATE(sNotificationpersistentserviceShutdownIdle) - NPP_CREATE_STATE(sNotificationpersistentserviceShutdownDataSave) - - // ========Connect states - NPP_CONNECT_DEFAULTSTATE(sNotificationpersistentserviceNPPRoot, sNotificationpersistentserviceNPPStart) - NPP_CONNECT_STATE(sNotificationpersistentserviceNPPRoot, sNotificationpersistentserviceNPPStart) - NPP_CONNECT_STATE(sNotificationpersistentserviceNPPRoot, sNotificationpersistentserviceNPPError) - - NPP_CONNECT_ORTHOGONAL_REGION(sNotificationpersistentserviceNPPStart, sNotificationpersistentservicePersistence) - NPP_CONNECT_ORTHOGONAL_REGION(sNotificationpersistentserviceNPPStart, sNotificationpersistentserviceShutdown) - NPP_CONNECT_ORTHOGONAL_REGION(sNotificationpersistentserviceNPPStart, sNotificationpersistentserviceNotification) - - NPP_CONNECT_DEFAULTSTATE(sNotificationpersistentservicePersistence, sNotificationpersistentservicePersistenceReady) - NPP_CONNECT_STATE(sNotificationpersistentservicePersistence, sNotificationpersistentservicePersistenceError) - - NPP_CONNECT_DEFAULTSTATE(sNotificationpersistentserviceShutdown, sNotificationpersistentserviceShutdownIdle) - NPP_CONNECT_STATE(sNotificationpersistentserviceShutdown, sNotificationpersistentserviceShutdownDataSave) - - NPP_CONNECT_DEFAULTSTATE(sNotificationpersistentserviceNotification, sNotificationpersistentserviceNotificationReady) - NPP_CONNECT_STATE(sNotificationpersistentserviceNotification, sNotificationpersistentserviceNotificationError) - - // ========Create external transitions - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceNPPStart) - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceNPPError) - CREATE_EXTERNALTRANSITION(sNotificationpersistentservicePersistenceReady) - CREATE_EXTERNALTRANSITION(sNotificationpersistentservicePersistenceError) - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceShutdownIdle) - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceShutdownDataSave) - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceNotificationReady) - CREATE_EXTERNALTRANSITION(sNotificationpersistentserviceNotificationError) - - // ========Create internal transitions - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPReadPersistedData) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPReleaseFileAck) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnUserChange) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPNorDataSaveAck) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnRegisterPersistentFile) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnReleasePersistentFile) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnLoadPersistentFile) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnRegisterPersistentFolder) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnLoadPersistentFolder) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnReleasePersistentFolder) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetFilePersistentType) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetFolderPersistentType) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPersistentSync) - - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPShutdown) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnShutdownTimeout) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceCheckAllReleaseRequestsProcessed) - - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPublishNotification) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPRegisterNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSubscribeToNotification) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSubscribeToNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnRegisterNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnSubscribeFromNotification) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnSubscribeFromNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPGetReadyStatus) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPRegisterImmediateNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPClearPersistedData) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetDefaultPersistentData) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetNotfnPersistentType) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPublishImmediateNotification) - -#ifdef NPP_PROFILEINFO_ENABLE - - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfileNotifications) - CREATE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfilePersistence) - - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPProfileNotification, NotificationpersistentserviceOnNPProfileNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPProfilePersistence, NotificationpersistentserviceOnNPProfilePersistence) - -#endif - - // ========Connect events - NPP_CONNECT_EVENT(sNotificationpersistentserviceNPPRoot, evNPClearPersistedData, NotificationpersistentserviceOnNPClearPersistedData) - - NPP_CONNECT_EVENT(sNotificationpersistentserviceNPPStart, evError, sNotificationpersistentserviceNPPError) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNPPError, evReady, sNotificationpersistentserviceNPPStart) - - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evError, sNotificationpersistentservicePersistenceError) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceError, evReady, sNotificationpersistentservicePersistenceReady) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPReadPersistedData, NotificationpersistentserviceOnNPReadPersistedData) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPReleaseLoadAck, NotificationpersistentserviceOnNPReleaseFileAck) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPRegisterPersistentFile, NotificationpersistentserviceOnRegisterPersistentFile) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPReleasePersistentFile, NotificationpersistentserviceOnReleasePersistentFile) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPLoadPersistentFile, NotificationpersistentserviceOnLoadPersistentFile) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPRegisterPersistentFolder, NotificationpersistentserviceOnRegisterPersistentFolder) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPLoadPersistentFolder, NotificationpersistentserviceOnLoadPersistentFolder) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPReleasePersistentFolder, NotificationpersistentserviceOnReleasePersistentFolder) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPGetReadyStatus, NotificationpersistentserviceOnNPGetReadyStatus) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPSetFilePersistentType, NotificationpersistentserviceOnNPSetFilePersistentType) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPSetFolderPersistentType, NotificationpersistentserviceOnNPSetFolderPersistentType) - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evNPPersistentSync, NotificationpersistentserviceOnNPPersistentSync) - - NPP_CONNECT_EVENT(sNotificationpersistentservicePersistenceReady, evUserChange, NotificationpersistentserviceOnUserChange) - - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownIdle, evShutdown, NotificationpersistentserviceOnNPShutdown) - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownIdle, evNPShutdownDataSave, sNotificationpersistentserviceShutdownDataSave) - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownDataSave, evIdle, sNotificationpersistentserviceShutdownIdle) - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownDataSave, evShutdownTimeout, NotificationpersistentserviceOnShutdownTimeout) - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownDataSave, evCheckAllFilesPersisted, NotificationpersistentserviceCheckAllReleaseRequestsProcessed) - NPP_CONNECT_EVENT(sNotificationpersistentserviceShutdownDataSave, evNPNorShutdownAck, NotificationpersistentserviceOnNPNorDataSaveAck) - - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evError, sNotificationpersistentserviceNotificationError) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationError, evReady, sNotificationpersistentserviceNotificationReady) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPPublishNotification, NotificationpersistentserviceOnNPPublishNotification) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPRegisterNotifications, NotificationpersistentserviceOnNPRegisterNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPSubscribeToNotification, NotificationpersistentserviceOnNPSubscribeToNotification) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPSubscribeToNotifications, NotificationpersistentserviceOnNPSubscribeToNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPUnRegisterNotifications, NotificationpersistentserviceOnNPUnRegisterNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPUnSubscribeFromNotification, NotificationpersistentserviceOnNPUnSubscribeFromNotification) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPUnSubscribeFromNotifications, NotificationpersistentserviceOnNPUnSubscribeFromNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPRegisterImmediateNotifications, NotificationpersistentserviceOnNPRegisterImmediateNotifications) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPSetDefaultPersistentData, NotificationpersistentserviceOnNPSetDefaultPersistentData) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPSetNotfnPersistentType, NotificationpersistentserviceOnNPSetNotfnPersistentType) - NPP_CONNECT_EVENT(sNotificationpersistentserviceNotificationReady, evNPPublishImmediateNotification, NotificationpersistentserviceOnNPPublishImmediateNotification) - - NPP_CONNECTROOT(sNotificationpersistentserviceNPPRoot) - - NPP_PRINTSTATEMACHINE() // NOLINT (whitespace/empty_if_body) - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// NotificationpersistentservicePersistAll -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::NotificationpersistentservicePersistAll(EFrameworkunifiedShutdownType f_eshutdowntype, UI_32 f_uinotificationpersistentservicepersistcategoryflag) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - - if (eFrameworkunifiedQuickShutdown == f_eshutdowntype) { - if (NULL != m_pPersistenceManager) { // LCOV_EXCL_BR_LINE 6: m_pPersistenceManager can't be NULL - // set all file persisted status as TRUE - m_pPersistenceManager->SetFilePersistedStatus(TRUE); - - // send request to immediate persistence thread to stop all the immediate notification timer - m_pPersistenceManager->PersistNORData(f_eshutdowntype, f_uinotificationpersistentservicepersistcategoryflag); - } - } else { - if (eFrameworkunifiedNormalShutdown == f_eshutdowntype) { - f_uinotificationpersistentservicepersistcategoryflag = 0x0; - } - - // save global notification data of persisted state notification - if (eFrameworkunifiedStatusOK != NotificationpersistentserviceSaveNotificationPersistentData(eFrameworkunifiedPersistedStateVar, f_uinotificationpersistentservicepersistcategoryflag)) { // LCOV_EXCL_BR_LINE 6: NotificationpersistentserviceSaveNotificationPersistentData will always return ok // NOLINT[whitespace/line_length] - // LCOV_EXCL_START 6: NotificationpersistentserviceSaveNotificationPersistentData will always return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error while saving notification persistent data."); - // LCOV_EXCL_STOP - } - - // save user notification data for the current user - if (eFrameworkunifiedStatusOK != NotificationpersistentserviceSaveNotificationPersistentData(eFrameworkunifiedPersistedStateUserVar, f_uinotificationpersistentservicepersistcategoryflag)) { // LCOV_EXCL_BR_LINE 6: NotificationpersistentserviceSaveNotificationPersistentData will always return ok // NOLINT[whitespace/line_length] - // LCOV_EXCL_START 6: NotificationpersistentserviceSaveNotificationPersistentData will always return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error while saving user notification persistent data."); - // LCOV_EXCL_STOP - } - - // NOR data is saved immediately, - // but during shutdown it can be possible that because of delay in consecutive save to NOR - // the latest data may not get persisted. So if we get shutdown we will need to persist the data immediately. - if (NULL != m_pPersistenceManager) { // LCOV_EXCL_BR_LINE 6: m_pPersistenceManager can't be NULL - m_pPersistenceManager->PersistNORData(f_eshutdowntype, f_uinotificationpersistentservicepersistcategoryflag); - } - - // delete all persistent files and folders for all applications - if ((eFrameworkunifiedUserData | eFrameworkunifiedFactoryData | eFrameworkunifiedFactoryCustomerData | eFrameworkunifiedDealerData) == f_uinotificationpersistentservicepersistcategoryflag) { - if (NULL != m_pPersistenceManager) { // LCOV_EXCL_BR_LINE 6: m_pPersistenceManager can't be NULL - m_pPersistenceManager->SetFilePersistedStatus(TRUE); - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; // LCOV_EXCL_LINE 6: m_pPersistenceManager can't be NULL - } - } else { - // writes the temporary global and user files to permanent memory - if (m_pPersistenceManager) { // LCOV_EXCL_BR_LINE 6: m_pPersistenceManager can't be NULL - if (eFrameworkunifiedStatusOK == m_pPersistenceManager->PersistAllReleaseRequests(f_uinotificationpersistentservicepersistcategoryflag)) { // LCOV_EXCL_BR_LINE 6: PersistAllReleaseRequests will always return ok // NOLINT[whitespace/line_length] - // this is needed to check in case when there are no file to persist - if (TRUE == m_pPersistenceManager->HaveAllReleaseRequestsPersisted()) { // LCOV_EXCL_BR_LINE 6: HaveAllReleaseRequestsPersisted will always return ok // NOLINT[whitespace/line_length] - // LCOV_EXCL_START 6: HaveAllReleaseRequestsPersisted will always return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "All file release requests processed"); - m_pPersistenceManager->SetFilePersistedStatus(TRUE); - // LCOV_EXCL_STOP - } - } else { - // LCOV_EXCL_START 6: PersistAllReleaseRequests will always return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error while persisting temporary files."); - // LCOV_EXCL_STOP - } - } - } - } - - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// DeletePersistedDataFolder -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::DeletePersistedDataFolder(UI_32 f_uinotificationpersistentservicepersistcategoryflag) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - - struct timeb timebuf; - struct tm *theTime; - - ftime(&timebuf); - theTime = gmtime(&timebuf.time); // NOLINT (runtime/threadsafe_fn) - - // get the current date and time to append to the folder name - PCHAR l_cDateTime = new CHAR[MAX_STRING_SIZE_TAG]; - snprintf(l_cDateTime, MAX_STRING_SIZE_TAG, "_%02d%02d%02d_%02d%02d%02d", theTime->tm_mon + 1, theTime->tm_mday, - theTime->tm_year + 1900, theTime->tm_hour, theTime->tm_min, theTime->tm_sec); - - std::string l_cBasePath = CPersistence::GetStoragePath(); - std::string l_cSrcPath = ""; - std::string l_cDestPath = ""; - - if (eFrameworkunifiedUserData == (eFrameworkunifiedUserData & f_uinotificationpersistentservicepersistcategoryflag)) { - l_cSrcPath.assign(l_cBasePath); - l_cSrcPath.append(USERDATA); - - if (CFSDirectory::DoesDirecotryExist(l_cSrcPath)) { - l_cDestPath.assign(l_cSrcPath); - l_cDestPath.append(l_cDateTime); - - // instead of deleting the data, rename the persistence folder before shutdown - if (0 != rename(l_cSrcPath.c_str(), l_cDestPath.c_str())) { // LCOV_EXCL_BR_LINE 6: rename must return ok - // LCOV_EXCL_START 6: rename must return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Error renaming folder %s to %s, errno = %d", - l_cSrcPath.c_str(), - l_cDestPath.c_str(), - errno); - // LCOV_EXCL_STOP - } - } - } - if (eFrameworkunifiedFactoryData == (eFrameworkunifiedFactoryData & f_uinotificationpersistentservicepersistcategoryflag)) { - l_cSrcPath.assign(l_cBasePath); - l_cSrcPath.append(FACTORYDATA); - - if (CFSDirectory::DoesDirecotryExist(l_cSrcPath)) { - l_cDestPath.assign(l_cSrcPath); - l_cDestPath.append(l_cDateTime); - - // instead of deleting the data, rename the persistence folder before shutdown - if (0 != rename(l_cSrcPath.c_str(), l_cDestPath.c_str())) { // LCOV_EXCL_BR_LINE 6: rename must return ok - // LCOV_EXCL_START 6: rename must return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Error renaming folder %s to %s, errno = %d", - l_cSrcPath.c_str(), - l_cDestPath.c_str(), - errno); - // LCOV_EXCL_STOP - } - } - } - if (eFrameworkunifiedFactoryCustomerData == (eFrameworkunifiedFactoryCustomerData & f_uinotificationpersistentservicepersistcategoryflag)) { - l_cSrcPath.assign(l_cBasePath); - l_cSrcPath.append(FACTORYCUSTOMERDATA); - - if (CFSDirectory::DoesDirecotryExist(l_cSrcPath)) { - l_cDestPath.assign(l_cSrcPath); - l_cDestPath.append(l_cDateTime); - - // instead of deleting the data, rename the persistence folder before shutdown - if (0 != rename(l_cSrcPath.c_str(), l_cDestPath.c_str())) { // LCOV_EXCL_BR_LINE 6: rename must return ok - // LCOV_EXCL_START 6: rename must return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Error renaming folder %s to %s, errno = %d", - l_cSrcPath.c_str(), - l_cDestPath.c_str(), - errno); - // LCOV_EXCL_STOP - } - } - } - if (eFrameworkunifiedDealerData == (eFrameworkunifiedDealerData & f_uinotificationpersistentservicepersistcategoryflag)) { - l_cSrcPath.assign(l_cBasePath); - l_cSrcPath.append(DEALERDATA); - - if (CFSDirectory::DoesDirecotryExist(l_cSrcPath)) { - l_cDestPath.assign(l_cSrcPath); - l_cDestPath.append(l_cDateTime); - - // instead of deleting the data, rename the persistence folder before shutdown - if (0 != rename(l_cSrcPath.c_str(), l_cDestPath.c_str())) { // LCOV_EXCL_BR_LINE 6: rename must return ok - // LCOV_EXCL_START 6: rename must return ok - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, - "Error renaming folder %s to %s, errno = %d", - l_cSrcPath.c_str(), - l_cDestPath.c_str(), - errno); - // LCOV_EXCL_STOP - } - } - } - - if (NULL != l_cDateTime) { // LCOV_EXCL_BR_LINE 6: l_cDateTime can't be NULL - delete[] l_cDateTime; - l_cDateTime = NULL; - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// NotificationpersistentserviceSaveNotificationPersistentData -/// In this function, all the data related to persistent notification is retrieved from -/// notification manager and stored in persistent file by persistent manager. -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::NotificationpersistentserviceSaveNotificationPersistentData(EFrameworkunifiedNotificationType f_epersistenttype, - UI_32 f_uinotificationpersistentservicepersistcategoryflag) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - - // pointer of Notification Manager - CNotificationManager *l_pNotificationManager = NULL; - - // pointer of Persistence Manager - CPersistenceManager *l_pCNotificationpersistentservicePersistenceManager = NULL; - - Persistent_Notification_List_Type *l_vPersistentNotificationList = NULL; - - // get the instance of notification manager - l_pNotificationManager = m_pNotificationManager; - - // get the instance of persistence manager - l_pCNotificationpersistentservicePersistenceManager = m_pPersistenceManager; - - if (NULL != l_pNotificationManager && NULL != l_pCNotificationpersistentservicePersistenceManager) { // LCOV_EXCL_BR_LINE 6: l_pNotificationManager and l_pCNotificationpersistentservicePersistenceManager can't be NULL // NOLINT[whitespace/line_length] - // create new vector to retrieve persistent notification data - l_vPersistentNotificationList = new(std::nothrow) Persistent_Notification_List_Type(); - - if (NULL != l_vPersistentNotificationList) { // LCOV_EXCL_BR_LINE 5: l_vPersistentNotificationList can't be NULL - // get all the persistent notification data in vector from notification manager - l_pNotificationManager->NotificationpersistentserviceGetPersistentNotificationData(l_vPersistentNotificationList, - f_epersistenttype, - f_uinotificationpersistentservicepersistcategoryflag); - } else { - // LCOV_EXCL_START 5: l_vPersistentNotificationList can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "l_vPersistentNotificationList is NULL"); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - if (NULL != l_vPersistentNotificationList) { // LCOV_EXCL_BR_LINE 5: l_vPersistentNotificationList can't be NULL - if (eFrameworkunifiedPersistedStateVar == f_epersistenttype) { - // save persistent notification data from vector to file - l_estatus = l_pCNotificationpersistentservicePersistenceManager->NotificationpersistentserviceSaveNotificationData(l_vPersistentNotificationList); - } else if (eFrameworkunifiedPersistedStateUserVar == f_epersistenttype) { // LCOV_EXCL_BR_LINE 200: f_epersistenttype must be eFrameworkunifiedPersistedStateVar or eFrameworkunifiedPersistedStateUserVar // NOLINT[whitespace/line_length] - l_estatus = l_pCNotificationpersistentservicePersistenceManager->NotificationpersistentserviceSaveUserNotificationData(l_vPersistentNotificationList); - } else { - // LCOV_EXCL_START 200: f_epersistenttype must be eFrameworkunifiedPersistedStateVar or eFrameworkunifiedPersistedStateUserVar - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Save data for %d PersistentVarType not supported", f_epersistenttype); - // LCOV_EXCL_STOP - } - - - // delete the locally created vector - if (!l_vPersistentNotificationList->empty()) { - for (UI_32 l_uiCount = 0; - l_uiCount < l_vPersistentNotificationList->size(); - l_uiCount++) { - if (NULL != l_vPersistentNotificationList->at(l_uiCount)) { // LCOV_EXCL_BR_LINE 6: can't be NULL - delete l_vPersistentNotificationList->at(l_uiCount); - } - } - - // clear the vector - l_vPersistentNotificationList->clear(); - } - - delete l_vPersistentNotificationList; - l_vPersistentNotificationList = NULL; - } else { - // LCOV_EXCL_START 5: l_vPersistentNotificationList can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "l_vPersistentNotificationList is NULL"); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - } else { - // LCOV_EXCL_START 6: l_pNotificationManager and l_pCNotificationpersistentservicePersistenceManager can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "l_pNotificationManager is NULL"); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// NotificationpersistentserviceOnLoadPersistentData -/// In this transition, persistent file is loaded by persistent manager and -/// persistent notifications and its data is stored by notification manager. -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::NotificationpersistentserviceLoadPersistentNotificationData(EFrameworkunifiedNotificationType f_epersistenttype) { - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "+"); - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - - // pointer of Notification Manager - CNotificationManager *l_pNotificationManager = NULL; - - // pointer of Persistence Manager - CPersistenceManager *l_pNotificationpersistentservicePersistenceManager = NULL; - - // iterator of CNotificationToPersist vector - Persistent_Notification_List_Type *l_vPersistentNotificationList = NULL; - - // get the instance of notification manager - l_pNotificationManager = m_pNotificationManager; - - // get the instance of persistent manager - l_pNotificationpersistentservicePersistenceManager = m_pPersistenceManager; - - // create new vector for persistent notifications - l_vPersistentNotificationList = new(std::nothrow) Persistent_Notification_List_Type(); - - if (NULL != l_vPersistentNotificationList) { // LCOV_EXCL_BR_LINE 5: l_vPersistentNotificationList can't be NULL - if (NULL != l_pNotificationManager && NULL != l_pNotificationpersistentservicePersistenceManager) { // LCOV_EXCL_BR_LINE 6: l_pNotificationManager and l_pNotificationpersistentservicePersistenceManager can't be NULL // NOLINT[whitespace/line_length] - if (eFrameworkunifiedPersistedStateVar == f_epersistenttype) { - // read persistent notification data from file and store in vector - l_estatus = l_pNotificationpersistentservicePersistenceManager->NotificationpersistentserviceReadNotificationData(l_vPersistentNotificationList); - } else if (eFrameworkunifiedPersistedStateUserVar == f_epersistenttype) { - l_estatus = l_pNotificationpersistentservicePersistenceManager->NotificationpersistentserviceReadUserNotificationData(l_vPersistentNotificationList); - } else if (eFrameworkunifiedImmediatePersistedStateVar == f_epersistenttype) { // LCOV_EXCL_BR_LINE 200: f_epersistenttype must be eFrameworkunifiedPersistedStateVar or eFrameworkunifiedPersistedStateUserVar or eFrameworkunifiedImmediatePersistedStateVar // NOLINT[whitespace/line_length] - l_estatus = l_pNotificationpersistentservicePersistenceManager->NotificationpersistentserviceReadNorNotificationData(l_vPersistentNotificationList); - } else { - // LCOV_EXCL_START 200: f_epersistenttype must be eFrameworkunifiedPersistedStateVar or eFrameworkunifiedPersistedStateUserVar or eFrameworkunifiedImmediatePersistedStateVar // NOLINT[whitespace/line_length] - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusFail; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Read data for %d PersistentVarType not supported", f_epersistenttype); - // LCOV_EXCL_STOP - } - - if (0 < l_vPersistentNotificationList->size()) { - // send the notification list to notification manager - l_estatus = l_pNotificationManager->NotificationpersistentserviceSetPersistentNotificationData(l_vPersistentNotificationList); - } - } else { - // LCOV_EXCL_START 6: l_pNotificationManager and l_pNotificationpersistentservicePersistenceManager can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "l_pNotificationManager or l_pNotificationpersistentservicePersistenceManager is NULL"); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - if (!l_vPersistentNotificationList->empty()) { - for (UI_32 l_uiCount = 0; - l_uiCount < l_vPersistentNotificationList->size(); - l_uiCount++) { - if (NULL != l_vPersistentNotificationList->at(l_uiCount)) { // LCOV_EXCL_BR_LINE 6: can't be NULL - delete l_vPersistentNotificationList->at(l_uiCount); - } - } - - // clear the vector - l_vPersistentNotificationList->clear(); - } - - delete l_vPersistentNotificationList; - l_vPersistentNotificationList = NULL; - } else { - // LCOV_EXCL_START 5: l_vPersistentNotificationList can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Memory allocation error for l_vPersistentNotificationList"); - l_estatus = eFrameworkunifiedStatusNullPointer; - // LCOV_EXCL_STOP - } - - FRAMEWORKUNIFIEDLOG(ZONE_FUNC, __FUNCTION__, "-"); - return l_estatus; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// -/// CreateAndStartChildThreads -/// -//////////////////////////////////////////////////////////////////////////////////////////////////// -EFrameworkunifiedStatus CNSNPP::CreateAndStartChildThreads(HANDLE f_happ) { - EFrameworkunifiedStatus l_estatus = eFrameworkunifiedStatusOK; - - if (NULL == f_happ) { // LCOV_EXCL_BR_LINE 6: f_happ can't be NULL - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; // LCOV_EXCL_LINE 6: f_happ can't be NULL - } - - if (eFrameworkunifiedStatusOK == l_estatus) { // LCOV_EXCL_BR_LINE 6: l_estatus is eFrameworkunifiedStatusOK - // create reader thread - if (NULL != (m_hNSReadThread = FrameworkunifiedCreateChildThreadWithPriority(f_happ, m_cReadThreadName.c_str(), NSPCopyWorkerOnStart, NSPCopyWorkerOnStop, CNSNPP::m_siReadThreadPrio))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - "Thread %s created, Prio=%d", - m_cReadThreadName.c_str(), - CNSNPP::m_siReadThreadPrio); - - // start the reader thread - if (eFrameworkunifiedStatusOK == (l_estatus = FrameworkunifiedStartChildThread(f_happ, m_hNSReadThread, 0, NULL))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - m_pPersistenceManager->SetReadThreadHandle(m_hNSReadThread); - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Fail to Start Read Worker thread. Status:0x%x", l_estatus); // LCOV_EXCL_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - } - } else { - // LCOV_EXCL_START 4: NSFW error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error creating NPP Read Worker thread"); - // LCOV_EXCL_STOP - } - } - - if (eFrameworkunifiedStatusOK == l_estatus) { // LCOV_EXCL_BR_LINE 6: l_estatus is eFrameworkunifiedStatusOK - // create writer thread - if (NULL != (m_hNSWriteThread = FrameworkunifiedCreateChildThreadWithPriority(f_happ, m_cWriteThreadName.c_str(), NSPCopyWorkerOnStart, NSPCopyWorkerOnStop, CNSNPP::m_siWriteThreadPrio))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, - "Thread %s created, Prio=%d", - m_cWriteThreadName.c_str(), - CNSNPP::m_siWriteThreadPrio); - - // start the writer thread - if (eFrameworkunifiedStatusOK == (l_estatus = FrameworkunifiedStartChildThread(f_happ, m_hNSWriteThread, 0, NULL))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - m_pPersistenceManager->SetWriteThreadHandle(m_hNSWriteThread); - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Fail to Start Write Worker thread. Status:0x%x", l_estatus); // LCOV_EXCL_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - } - } else { - // LCOV_EXCL_START 4: NSFW error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error creating NPP Write Worker thread"); - // LCOV_EXCL_STOP - } - } - - if (eFrameworkunifiedStatusOK == l_estatus) { // LCOV_EXCL_BR_LINE 6: l_estatus is eFrameworkunifiedStatusOK - // create immediate Persistence thread - if (NULL != (m_hNSImmediatePersistenceThread = FrameworkunifiedCreateChildThreadWithPriority(f_happ, m_cImmediatePersistenceThreadName.c_str(), NSPNorPersistenceWorkerOnStart, NSPNorPersistenceWorkerOnStop, CNSNPP::m_siImmediatePersistenceThreadPrio))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - FRAMEWORKUNIFIEDLOG(ZONE_INFO, __FUNCTION__, "Thread %s created, Prio=%d", m_cImmediatePersistenceThreadName.c_str(), - CNSNPP::m_siImmediatePersistenceThreadPrio); - - // start the immediate Persistence thread - if (eFrameworkunifiedStatusOK == (l_estatus = FrameworkunifiedStartChildThread(f_happ, m_hNSImmediatePersistenceThread, 0, NULL))) { // LCOV_EXCL_BR_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - m_pPersistenceManager->SetNorPersistenceThreadHandle(m_hNSImmediatePersistenceThread); - } else { - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Fail to Start immediate persistence thread. Status:0x%x", l_estatus); // LCOV_EXCL_LINE 4: NSFW error case // NOLINT[whitespace/line_length] - } - } else { - // LCOV_EXCL_START 4: NSFW error case - AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert - l_estatus = eFrameworkunifiedStatusNullPointer; - FRAMEWORKUNIFIEDLOG(ZONE_ERR, __FUNCTION__, "Error creating NPP immediate persistence Worker thread"); - // LCOV_EXCL_STOP - } - } - - return l_estatus; -} |