101 lines
3.4 KiB
C++
101 lines
3.4 KiB
C++
/****************************************************************************
|
|
fimngd 와 data 송수신을 담당할 socket class
|
|
-----------------------------------------
|
|
|
|
begin : 2015/08/27
|
|
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 __SOCKET_FIMNGD_H__
|
|
#define __SOCKET_FIMNGD_H__
|
|
|
|
#include "BaseSocket.h"
|
|
#include "ProtocolFimngd.h"
|
|
|
|
#include <vector>
|
|
|
|
|
|
// fimngd 로 부터 수신된 각 서비스별 network 통계 정보를 저장하기 위한 구조체
|
|
struct ServiceNetworkStat {
|
|
|
|
char hostname[FIMNGD_HOST_NAME_MAX_LENGTH + 1]; // hostname, 최대 63자까지만 허용.
|
|
|
|
uint32_t timestamp; // timestamp
|
|
int user_seq; // user sequence
|
|
int svc_seq; // service sequence
|
|
|
|
uint64_t down_content_size; // download content size
|
|
uint64_t up_content_size; // upload content size
|
|
|
|
uint64_t down_traffic; // download packet size
|
|
uint64_t up_traffic; // upload packet size
|
|
};
|
|
|
|
// CSocketFimngd
|
|
// fimngd 와 TCP 통신 및 data 송수신을 담당할 class.
|
|
class CSocketFimngd : public CBaseSocket
|
|
{
|
|
public:
|
|
|
|
// 생성자
|
|
// param [in] clientSocket client 와 통신 연결된 socket.
|
|
CSocketFimngd( int clientSocket );
|
|
|
|
// 소멸자
|
|
~CSocketFimngd();
|
|
|
|
|
|
private:
|
|
|
|
// Packet Header 변수
|
|
struct PacketHeaderFimngd m_packetHeader;
|
|
|
|
// m_packetHeader 구조체의 크기를 저장하기 위한 상수
|
|
const int m_iPacketHeaderLen;
|
|
|
|
// Packet Header 에 저장된 Data 부분의 길이 정보값.
|
|
unsigned int m_uPacketDataLen;
|
|
|
|
|
|
|
|
public:
|
|
|
|
// Packet Header 부분의 수신 처리를 위한 함수
|
|
// param command [out] 수신된 command code
|
|
// param timeout [in] 대기시간.
|
|
// retrun 0 : timeout
|
|
// 1 : 성공
|
|
// -1 : socket 오류 또는 정의된 Data 가 아닌 경우.
|
|
int GetPacketHeader( char & command, int timeout = DEFAULT_DATA_RECEIVE_TIMEOUT );
|
|
|
|
// Packet Header 정보를 Log 파일에 Logging 처리 ( Debug 처리를 위한 함수)
|
|
void PrintHeaderToLog( void );
|
|
|
|
// COMMAND_SERVICE_NETWORK_STAT 요청 관련 Body 수신 처리.
|
|
// - protocol version 에 따른 처리 필요.
|
|
// param vecNetworkStat [out] 수신된 각 서비스별 network 통계 정보 저장
|
|
// return false socket 오류, 해당 protocol version 미지원, RC ID 불일치 등 비정상 상황.
|
|
// 그외 true
|
|
bool GetPacketBodyNetworkStat( std::vector< struct ServiceNetworkStat > & vecStat );
|
|
|
|
// NEW 2016-05-27 huibong
|
|
// - #27106 에 의해
|
|
// - fimngd 로 부터 Network 통계 수신시 Protocol version 0x01 이상이면.. 처리 결과를 전송하도록 기능 추가
|
|
// - bSuccess = true : 성공인 경우.. Packet header 에 성공으로 표시하여 전달. ( 성공시 추가 메시지는 전달 안함)
|
|
// = false : 실패인 경우.. Packet header 에 실패로 표시하고.. 전달할 메시지가 있는 경우.. 해당 정보까지 전달.
|
|
bool SendResultNetworkStat( bool bSuccess, std::string& strMessage );
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif /* __SOCKET_FIMNGD_H__ */
|
|
|