Files
interactive/rcts/rc_rmcd/src/ReplicateControl.h
T
2026-08-07 17:38:18 +09:00

105 lines
2.8 KiB
C++

/***************************************************************************
Replicate Control class
-----------------------------------------
begin : 2010/03/31
copyright : (C) 2010 Solbox Inc.
author : storage dev team
email : storage.sd@solbox.com
version : 3.3
CopyRight(C) 2010 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 __REPLICATE_CONTROL_H__
#define __REPLICATE_CONTROL_H__
#include <pthread.h>
#include "ProperFhs.h"
#include "ProcessStatus.h"
#include "DataQueue.hpp"
#include "ReplicationData.h"
#include "ReportLog.h"
#include "ReplicateQueueControl.h"
// CReplicateControl
// Replication 관련 각 Thread 및 Queue 를 제어하여...
// 전체적으로 Replication 생성 업무 Flow 를 제어한다.
// 내부적으로 Thread를 사용
class CReplicateControl
{
public:
// 생성자
CReplicateControl( CProperFhs * pProperFhs
, CProcessStatus * pProcessStatus
, CDataQueue<CSourceData> * pQueueSource
, CDataQueue<CRetryData> * pQueueRetry
, CDataQueue<CCompleteData> * pQueueComplete );
// 소멸자
~CReplicateControl();
// 객체 초기화 수행
bool Init();
// thread를 생성하여 업무 flow 를 시작.
bool Start();
private:
// Proper FHS 정보를 관리하는 CProperFhs 객체에 대한 포인터.
// - 생성자를 통해 전달받음.
CProperFhs * m_pProperFhs;
// 프로세스 상의 Queue, Thread 상태를 관리하는 CProcessStatus 객체에 대한 포인터
// - 생성자를 통해 전달받음
CProcessStatus * m_pProcessStatus;
// 복제대상 Content 정보를 관리하는 Queue 객체에 대한 포인터
// - 생성자를 통해 전달받음
CDataQueue<CSourceData> * m_pSourceQueue;
// 복제 처리 관련 재시도 Content 정보를 관리하는 Queue 객체에 대한 포인터
// - 생성자를 통해 전달받음
CDataQueue<CRetryData> * m_pRetryQueue;
// 복제 완료된 Content 정보를 관리하는 Queue 객체에 대한 포인터
// - 생성자를 통해 전달받음
CDataQueue<CCompleteData> * m_pCompleteQueue;
// 스레드 핸들
pthread_t m_threadHandle;
// Report log 처리 관련 객체
CReportLog m_reportLog;
// Thread Loop 마다 Sleep Time 정보를 저장하기 위한 변수
unsigned int m_uSleep;
// conf 에 설정된 Replication Retry count 정보를 저장하기 위한 멤버 변수
unsigned int m_uRetryCount;
// Queue Pop 처리를 담당할 멤버 객체
CReplicateQueueControl m_controlQueuePop;
private:
// 스레드 함수
static void* threadFunc( void* arg );
// 스레드 내에서 각 loop 단위 처리 호출 함수.
void Execute();
// Replication 생성 처리를 수행하기 위한 함수.
bool MakeReplication();
};
#endif //__REPLICATE_CONTROL_H__