91 lines
2.6 KiB
C++
91 lines
2.6 KiB
C++
/****************************************************************************
|
|
rc_balanced content physical delete thread header
|
|
-----------------------------------------
|
|
|
|
begin : 2019/03/13
|
|
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 __PHYSICAL_DELETE_THREAD_H__
|
|
#define __PHYSICAL_DELETE_THREAD_H__
|
|
|
|
#include <pthread.h>
|
|
|
|
#include "RebalanceData.h"
|
|
#include "DataQueue.hpp"
|
|
#include "ProcessMonitoringThread.h"
|
|
|
|
|
|
// CPhysicalDeleteThread class
|
|
// - delete standby queue 에 들어 있는 content 를 pop 하여...
|
|
// - 각 FHS 의 ftsd 로 unlink 처리 요청을 전송한다.
|
|
// - 만약 unlink 처리 실패 발생한 경우.. retry queue 에 저장한 후 지정된 시간 이후 재시도 처리한다.
|
|
class CPhysicalDeleteThread
|
|
{
|
|
public:
|
|
|
|
// 생성자
|
|
CPhysicalDeleteThread( CDataQueue<CRebalanceData> * const pQueueDeleteStandby
|
|
, CProcessMonitoringThread * pMonitoringThread );
|
|
|
|
// 소멸자
|
|
~CPhysicalDeleteThread();
|
|
|
|
// Thread 를 생성하여 주기적으로 job 을 처리한다.
|
|
bool Start( void );
|
|
|
|
|
|
private:
|
|
|
|
// Thread handle
|
|
pthread_t m_threadHandle;
|
|
|
|
// Thread Loop 마다 Sleep Time 정보를 저장하기 위한 변수
|
|
unsigned int m_uSleep;
|
|
|
|
|
|
// unlink 처리 대상 content 정보를 저장하는 queueDeleteStandby 객체에 대한 포인터
|
|
CDataQueue<CRebalanceData> * m_pQueueDeleteStandby;
|
|
|
|
// unlink 처리 실패시 retry 처리를 수행하기 위한 내부 queue 객체 (외부에서 전달받은 객체가 아닌 내부 멤버객체임)
|
|
CDataQueue<CRebalanceData> m_queueDeleteRetry;
|
|
|
|
|
|
// CProcessMonitoringThread 객체에 대한 포인터
|
|
// - delete 작업 통계 정보 업데이트를 위한 객체 포인터, 생성자에서 전달받음
|
|
CProcessMonitoringThread * m_pMonitoringThread;
|
|
|
|
|
|
private:
|
|
|
|
// Thread loop base function
|
|
static void * threadFunc( void * arg );
|
|
|
|
// 실제 Content Copy 처리를 control 하는 함수
|
|
void Execute( void );
|
|
|
|
|
|
// Delete queue , Retry queue 에서 삭제 작업을 수행할 content 를 POP 처리하여
|
|
// 전달받은 참조 인자로 전달한다.
|
|
// pop 처리할 content 가 없는 경우 false 반환.
|
|
bool Pop( CRebalanceData &data );
|
|
|
|
// 실제 ftsd 와 통신을 통해 인자로 전달받은 content unlink 처리 수행
|
|
bool Delete( CRebalanceData &data );
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
#endif /* __PHYSICAL_DELETE_THREAD_H__ */
|
|
|