/****************************************************************************
				rc_balanced copy thread header 
				-----------------------------------------

	begin      : 2019/03/22
	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 __CONTENT_COPY_THREAD_H__
#define __CONTENT_COPY_THREAD_H__

#include <pthread.h>

#include "RebalanceData.h"
#include "DataQueue.hpp"
#include "CopyControlThread.h"


// CCopyThread class
// - 전달받은 content 정보를 이용하여...
// - 실제 FHS 의 ftsd 와 통신을 하여 Content COPY 처리를 수행
class CCopyThread
{
	public:

		// 생성자
		CCopyThread(
			CRebalanceData & data
			, CDataQueue<CRebalanceData> * const pQueueUpdateStandby
			, CCopyControlThread * const pControl );

		// 소멸자
		~CCopyThread();

		// Thread 생성 및 Copy 작업 시작
		bool Start( void );


	private:

		// Thread handle
		pthread_t m_threadHandle;

		// 작업 대상 content 정보 저장을 위한 객체
		CRebalanceData m_data;

		// FHS Copy 처리 완료 후 RCDB 업데이트 대상 content 정보를 저장하는 queueUpdateStandby 객체에 대한 포인터
		CDataQueue<CRebalanceData> * m_pQueueUpdateStandby;

		// thread 상태를 check 하는 CopyControlThread 객체에 대한 포인터
		CCopyControlThread * m_pControl;

	private:

		// Thread function
		static void * threadFunc( void * arg );

		// 실제 content copy 처리를 수행
		void Execute( void );

};

#endif /* __CONTENT_COPY_THREAD_H__ */

