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