/***************************************************************************
                Cache 관련 Data 정보 저장 Class
                -----------------------------------------
    begin      : 2014/07/08
    copyright  : (C) 2005 Solbox Inc.
    author     : Storage Dev Team
    email      : storage.sd@solbox.com
    version    : 3.3

    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 __CACHE_DATA_H__ 
#define __CACHE_DATA_H__

#include <string>

#include "CacheRequestData.h"


// CCacheData
// Cache 생성 관련 Content 에 대한 모든 정보를 관리하는 Data 객체
class CCacheData
{
    public:

		// 생성자
		CCacheData();

		// 소멸자
		~CCacheData();

		// 본 객체의 재사용을 위한 멤버 변수 초기화 함수
		void Init( void );

		// 해당 Content 의 작업 상태 정보 변경
		// - Cache 생성 대기 상태로 변경
		void SetStatusReady();

		// 해당 Content 의 작업 상태 정보 변경
		// - Cache 생성 작업 중 상태로 변경
		void SetStatusStart();

		// 해당 Content 의 작업 상태가 CACHE_STATUS_READY 여부 판단
		bool IsStatusReady();


	public:

		// FHS 로 부터 수신된 Cache 생성 request 정보 저장 객체
		// - FHS 수신 관련 Worker 및 FimngdSocketControl 모듈에서 data 생성 처리
		CCacheRequestData m_requestData;

		// FHS 로 부터 수신된 요청의 uri 정보
		// - COPY 로 인해 물리 Content 에 연결된 URI 가 여러개인 경우 발생.
		// - 따라서 단순 로깅 목적으로의 URI 정보 표시시 오해 발생 가능하므로...
		// - URI 정보는 사용하지 않토록 수정함.
		//std::string m_strUri;
		
		// Cache 생성 작업시 원본 Content 를 제공할 FHS 정보
		// - CacheOrder 모듈에서 생성
		std::string m_strSourceHost;

		// Cache 생성 작업시 원본 Content 의 filename hash 정보
		// - CacheOrder 모듈에서 생성
		std::string m_strSourceFilenameHash;

		// Cache 생성 작업시 Cache Content 를 저장할 FHS 정보
		// - CacheOrder 모듈에서 생성
		std::string m_strTargetHost;
				
		// Cache 생성 작업을 통해 최종 생성된 filename hash 정보
		// - Cache Thread 모듈에 의해 생성됨
		std::string m_strTargetFilenameHash;


	private:

		// Cache 생성 작업 상태 정보 저장
		// 0 : READY ( Thread 할당 대기 )
		// 1 : START ( Thread 작업 중 )
		int m_nStatus;
												
};

#endif // __CACHE_DATA_H__
