base
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
/****************************************************************************
|
||||
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__ */
|
||||
Reference in New Issue
Block a user