/****************************************************************************
				rc_accessd content access time extract  header 
				-----------------------------------------

	begin      : 2021/04/14
	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 __THREAD_ACCESS_TIME_H__
#define __THREAD_ACCESS_TIME_H__

#include <pthread.h>

#include "DataAccess.h"
#include "DataQueue.hpp"
#include "ThreadExtractControl.h"


// CThreadAccessTime class
// - 전달받은 data 에 대해 FHS ftsd 와 통신을 통해 access time 정보를 추출하여... 
// - 전달받은 queue 에 저장 처리 수행
class CThreadAccessTime
{

	public:

		CThreadAccessTime( CDataAccess & data, CDataQueue<CDataAccess> * const pQueueComplete, CThreadExtractControl * const pControl );
		
		~CThreadAccessTime();


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


	private:

		// thread handle
		pthread_t m_threadHandle;

		// 작업 대상 content 정보 객체
		CDataAccess m_data;

		// 작업 완료된 content 목록을 저장하기 위한 queue 로서... 생성자를 통해 전달받은 queue point 를 의미
		CDataQueue<CDataAccess> * m_pQueueComplete;

		// thread 상태를 check 하는 상위 control 객체에 대한 포인터
		CThreadExtractControl * m_pControl;


	private:

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

		// 실제 작업을 수행하기 위한 함수
		void Execute( void );

		long GetThreadId( void );



};

#endif /* __THREAD_ACCESS_TIME_H__ */

