Files
interactive/rcts/rc_balanced/src/ProcessMonitoringThread.h
2026-08-07 17:38:18 +09:00

115 lines
3.3 KiB
C++

/****************************************************************************
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 <pthread.h>
#include <map>
#include <string>
// 각 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<CRebalanceData> * const pQueueMoveStandby
, CDataQueue<CRebalanceData> * const pQueueUpdateStandby
, CDataQueue<CRebalanceData> * 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<CRebalanceData> * m_pQueueMoveStandby;
// FHS Copy 처리 완료 후 RCDB 업데이트 대상 content 정보를 저장하는 queueUpdateStandby 객체에 대한 포인터
CDataQueue<CRebalanceData> * m_pQueueUpdateStandby;
// unlink 처리 대상 content 정보를 저장하는 queueDeleteStandby 객체에 대한 포인터
CDataQueue<CRebalanceData> * m_pQueueDeleteStandby;
// copy control thread 객체에 대한 포인터
CCopyControlThread * m_pCopyControlThread;
// unlink 처리한 FHS 별 통계 정보 저장을 위한 객체
std::map<std::string, struct FhsUnlinkInfo> 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__ */