105 lines
2.8 KiB
C++
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__
|