/**************************************************************************** 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 // 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__ */