/****************************************************************************
           Garbage content unlink module 
           -----------------------------------------

begin      : 2015/10/22
copyright  : (C) 2005 Solbox Inc.
author     : Dev Storage Team
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 __GARBAGE_CONTENT_CLEAN_H__
#define __GARBAGE_CONTENT_CLEAN_H__


#include <sqlite3.h>
#include <unistd.h>

#include <string>
#include <vector>


// 본 클래스는
// 지정된 경로의 content 가 sqlite local db 에 존재하는지 검사하여...
// garbage content 를 판별하고 unlink 처리를 수행하는 모듈이다.
class CGarbageClean
{
	public:

		// 생성자
		// - pLocalDb : sqlite memory db 객체에 대한 포인트
		CGarbageClean( sqlite3 * pLocalDb );

		// 소멸자
		~CGarbageClean();
		

	public:

		// 객체 초기화 함수
		// - local db 와의 연결 생성, 처리 결과를 저장할 table 생성, Query 객체 생성 처리.		
		bool Init();
				
		// garbage clean 작업 수행.
		// - bGarbageCleanSlow : unlink 수행 후 sleep 를 호출하는 slow 모드로 동작시킬지 여부.
		// - bGarbageForceDelete: unlink 처리시 access time 정보를 check 할지 여부
		bool Start( bool bGarbageCleanSlow, bool bGarbageForceDelete );
		

	private:
		
		// sqlite3 local db 객체.
		sqlite3 * m_pLocalDb;
		sqlite3_stmt * m_pLocalStmt;


		// 작업 대상 경로의 최하위 서비스 폴더명 정보를 저장하기 위한 변수
		std::vector< std::string > m_vecTargetDirectory;


	private:

		// 설정된 기본 경로를 바탕으로.. 작업대상 폴더명 정보를 추출하여.. 멤버변수에 저장 처리.
		bool GetTargetDir();





};

#endif /* __GARBAGE_CONTENT_CLEAN_H__ */

