/***************************************************************************
                rc_syncd Request Data Header ( RcSyncdRequestData.h )
				      - used : rc_cmove, rc_syncd(Scheduler)
                -----------------------------------------
	begin      : 2014/09/02
	copyright  : (C) 2005 Solbox Inc.
	author     : Storage Dev Team
	email      : storage.sd@solbox.com
	version    : 3.4

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


#include <list>
#include <string>

using namespace std;

namespace SYNC_TYPE
{

	enum SYNC_TYPE
	{
		NORMAL = 0,				// 동기화 요청(O), 모든 데이터 (복제, 캐쉬 제외)
		NORMA_N_ONLY = 1,		// 동기화 요청(O), deleted_yn = N 
		CHK_ONLY = 3,			// 동기화 요청(X), 모든 데이터 (복제, 캐쉬 제외)
		CHK_ONLY_N_ONLY = 4		// 동기화 요청(X), deleted_yn = N 
	};
}

// Requeset Data
/// base Data
class CReqServiceData
{
public:
	CReqServiceData(){};
	~CReqServiceData(){};

public:
	SYNC_TYPE::SYNC_TYPE   sync_type;

	string      start_time;
    string      end_time;
};

// admin(scheduler) => rc_syncd(Master)
class CReqMasterData : public CReqServiceData
{
public:
	CReqMasterData(){};
	~CReqMasterData(){};

public:
	// one_service 값이 없을 수도 있음
	//    Scheduler  : 해당 정보를 보내지 않음(RCDB 작업 회피를 위함)
	//    운영자(rc_cmove) : 특정 고객만 수행 시킬 수 있으므로 해당 값은 유동적임
    string    one_service;
    
};

// rc_syncd(Master) => rc_syncd(slave)
class CReqSlaveData : public CReqServiceData
{
public:
	CReqSlaveData(){};
	~CReqSlaveData(){};

public:
    string  master;
    string  slave;
};

// rc_syncd(Master) => rc_syncd(slave)
class CReqSyncData : public CReqServiceData
{
public:
	CReqSyncData(){};
	~CReqSyncData(){};

public:
    string  master;
    string  slave;
};

#endif /* __RC_SYNCD_REQUEST_DATA_H__ */


