/***************************************************************************
               rc_syncd 통신 관련 protocol header 
                -----------------------------------------
	begin      : 2014/09/04
	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_PROTOCOL_H__
#define __RC_SYNCD_PROTOCOL_H__


// rc_syncd 에서 사용할 통신 Header 구조체
// - 계산상 크기는 16Byte 이지만...
// - 통신상 sizeof() : 20Byte ( 64Bit OS )
struct RcSyncdPacketHeader {

	char stx;					// Packet 유효성 관리 코드
	char type;					// Request or Response 여부 ( 0x00: Request, 0x01: Response )
	char command[4];			// Command Code ( 4 Byte) : 0th client-rc_syncd, 1th rc_syncd - rc_syncd 간 사용.
	char result[4];				// Result Code  ( 4 Byte )
	unsigned int  data_length;	// Packet Data 부분의 길이값 ( Network Byte Order 사용)
	char extend_code[2];		// 확장 및 Padding bits ( 2 Byte )
};

// Packet Header stx 코드
#define HEADER_STX_CODE					0x03

// Packet Header type 구분코드
#define HEADER_TYPE_REQUEST				0x00
#define HEADER_TYPE_RESPONSE			0x01


// Packet command 공통.
#define COMMON_ALIVE_CHECK				0x7F

// Packet command 
// client <-> rc_syncd 통신 (command 0th byte 만 사용)

#define NOT_CLIENT_COMMAND				0x00	// Client 에서 전송한 요청이 아닌 경우.
#define CLIENT_COMMAND_SYNC		        0x01	// Client 에서 동기화 수행 요청

// Packet command 
// rc_syncd <-> rc_syncd 간의 내부 통신 (command 1st byte 만 사용)

#define PROCESS_CONTENT_LIST			0x01	// Content 정보 목록 요청                    => RCDB 에서 Content 정보 추출 후 전달
#define PROCESS_CONTENT_SYNC            0x02    // 동기화 수행 요청 (동기화 대상 목록 전달)  => 동기화 수행 후 결과 전달.


// Packet Result 
// => type이 Response 인 경우에만 세팅됨.( 0th Byte 만 사용시 )
#define HEADER_RESULT_SUCCESS			0x00
#define HEADER_RESULT_ERROR				0x01


// 기타 정보
#define LENGTH_FIELD_SIZE				4		// 가변데이터 형식 사용시 Length 필드의 메모리 크기 (unsigned int)


#endif /* __RC_SYNCD_PROTOCOL_H__ */
