/**************************************************************************** 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 #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 * 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 * m_pQueueDeleteStandby; // unlink 처리 실패시 retry 처리를 수행하기 위한 내부 queue 객체 (외부에서 전달받은 객체가 아닌 내부 멤버객체임) CDataQueue 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__ */