/**************************************************************************** rc_balanced process monitoring thread header ----------------------------------------- begin : 2019/03/07 copyright : (C) 2005 Solbox Inc. author : huibong email : huibong@solbox.com version : 3.5 CopyRight(C) 2005 Solbox Inc. All Rights reserved. Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of Solbox Inc. *****************************************************************************/ #ifndef __PROCESS_MONITORING_THREAD_H__ #define __PROCESS_MONITORING_THREAD_H__ #include "RebalanceData.h" #include "DataQueue.hpp" #include "CopyControlThread.h" #include #include #include // 각 FHS 별 unlink 처리한 정보 저장을 위한 구조체 // map 을 통해서 관리하기 때문에 각 장비 hostname 을 정보에 포함시키지 않는다. struct FhsUnlinkInfo { unsigned long long hour_sum; // 시간당 삭제 sum unsigned long hour_count; // 시간당 삭제 count unsigned long long day_sum; // 일일 삭제 sum unsigned long day_count; // 일일 삭제 count }; // CProcessMonitoringThread class // - 프로세스 내부의 각 작업 queue count 정보를 주기적으로 console 상에 업데이트 처리 // - 주기적으로 rebalance 처리 상황을 로깅 class CProcessMonitoringThread { public: // 생성자 CProcessMonitoringThread( CDataQueue * const pQueueMoveStandby , CDataQueue * const pQueueUpdateStandby , CDataQueue * const pQueueDeleteStandby , CCopyControlThread * const pCopyControlThread ); // 소멸자 ~CProcessMonitoringThread(); // Thread 를 생성하여 상태정보를 주기적으로 갱신, 로깅 처리한다. bool Start( void ); // 현재 프로세스 표시 정보 직접 업데이트 void UpdateTitle( void ); // PhysicalDeleteThread 모듈로 부터 정상적으로 삭제한 FHS, content 정보를 전달받기 위한 함수 // - 전달받은 정보는 내부적으로 저장했다가 주기적으로 logging 처리 void UpdateDeletedInfo( CRebalanceData & data ); private: // Thread Handle pthread_t m_threadHandle; // Move 처리할 대상을 저장하는 queueMoveStandby 객체에 대한 포인터 CDataQueue * m_pQueueMoveStandby; // FHS Copy 처리 완료 후 RCDB 업데이트 대상 content 정보를 저장하는 queueUpdateStandby 객체에 대한 포인터 CDataQueue * m_pQueueUpdateStandby; // unlink 처리 대상 content 정보를 저장하는 queueDeleteStandby 객체에 대한 포인터 CDataQueue * m_pQueueDeleteStandby; // copy control thread 객체에 대한 포인터 CCopyControlThread * m_pCopyControlThread; // unlink 처리한 FHS 별 통계 정보 저장을 위한 객체 std::map m_mapUnlinkInfo; pthread_mutex_t m_mutexUnlinkInfo; private: // Thread loop base function static void * threadFunc( void * arg ); // 실제 상태 정보 업데이트를 수행하는 함수 void Execute( void ); // FHS 별 삭제 처리한 통계 정보를 로깅 및 초기화 처리한다. void printUnlinkInfo( void ); }; #endif /* __PROCESS_MONITORING_THREAD_H__ */