/****************************************************************************
				RCDB 로 부터 전달받은 content 정보 조회를 담당하는 class 
				-----------------------------------------

	begin      : 2021/03/15
	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_SELECT_H__
#define __CONTENT_SELECT_H__


#include "Database.h"
#include "RcdbInfo.h"


#include <vector>


// host, size, filename_hash 정보 저장을 위한 구조체
struct HostSizeFilenameInfo {
	
	std::string szHost;
	unsigned long long uContentLength;
	std::string szFilename;

};

// RCDB 에서 Content 정보 조회 처리를 담당하는 class.
class CContentSelect
{
	public:

		CContentSelect();

		~CContentSelect();

		// 초기화 처리  
		bool Start();

		// 최종 정리시 호출
		void Exit();


	private:

		// RCDB 연결 정보 관리 객체
		CRcdbInfo m_rcdbInfo;

		// RCDB 연결 객체
		DataBase m_rcdb;

		// log 기록시 사용할 thread id 정보
		long m_lThreadId;


	public:

		// RCDB 로 부터 uri 에 해당하는 hostname, content_length, filename_hash 정보를 반환.
		bool GetHostSizeFilename( const std::string & szServiceSeq, const bool & bUriIgnoreCase, const std::string & szUri
		, std::string& szErrorMessage, std::vector<struct HostSizeFilenameInfo> & vecResult );


};

#endif /* __CONTENT_SELECT_H__ */

