/*************************************************************************** client ¿¡¼­ cc_collectd ¿ÍÀÇ Åë½ÅÀ» ¼öÇàÇϱâ À§ÇÑ class ----------------------------------------- begin : 2014/09/29 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 __CC_COLLECTD_CLIENT_SOCKET_H__ #define __CC_COLLECTD_CLIENT_SOCKET_H__ #include "BaseSocket.h" #include "CcCollectdProtocol.h" #include #include ///< BYTE ŸÀÔ Á¤ÀÇ #ifndef _BYTE_DEFINED #define _BYTE_DEFINED typedef unsigned char BYTE; #endif // _BYTE_DEFINED #define DEFAULT_SOCKET_TEMP_BUFFER_SIZE 1024 // Socket °ü·Ã data ¼Û¼ö½Å½Ã »ç¿ëÇÒ ÀӽùöÆÛ Å©±â. // CCcCollectdClientSocket // cc_collectd ¸ðµâ°ú Åë½Å ¼öÇà °ü·Ã Interface Áö¿ø ¸ñÀûÀ» À§ÇÑ Åë½Å °ü·Ã ó¸® class class CCcCollectdClientSocket : public CBaseSocket { public: // »ý¼ºÀÚ CCcCollectdClientSocket(); // ¼Ò¸êÀÚ ~CCcCollectdClientSocket(); // Àü´Þ¹ÞÀº Target À¸·Î Socket Á¢¼ÓÀ» ¼öÇà // @param szTarget [in] Á¢¼Ó ´ë»ó Host name ¶Ç´Â IP // @param nPort [in] Á¢¼Ó Port // @return Á¢¼Ó ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. ( ¿À·ù ³»¿ªÀº ·Î±ë󸮵Ê.) bool ConnectTarget( const std::string& szTarget, int nPort ); // cc_collect ·Î File Á¸Àç ¿©ºÎ È®ÀÎ // @param strProcessName [in] ÇÁ·Î¼¼½º ¸í, ÀúÀå½Ã ÇÁ·Î¼¼½º ¸í¿¡ µû¸¥ Æú´õ »ý¼º ÈÄ ÆÄÀÏ ¼ö½Å, ÀúÀå ó¸®ÇÔ. // »ý·« °¡´ÉÇÏÁö¸¸.. '/' ¹®ÀÚ°¡ Æ÷ÇԵǼ­´Â ¾ÈµÊ. // // @param strFileName [in] ÀúÀå ÆÄÀϸí // a.log °°Àº ´Ü¼ø Çü½Ä »ç¿ë, // /a/b.log °°Àº °æ·Î Á¤º¸ Æ÷ÇԽà ¿À·ù ¹ß»ý. // // @param nFileSize [out] ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇÒ °æ¿ì ÆÄÀÏÀÇ Å©±â // ¸¸¾à ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì.. Å©±â´Â 0 // // @param strErrorMessage [out] ¼ö½ÅµÈ ¿À·ù ¸Þ½ÃÁö ÀúÀå // @return // ¼º°ø½Ã true, ÆÄÀÏ Å©±â´Â nFileSize Ç׸ñ Âü°í. // ¿À·ù ¹ß»ý½Ã false, ¿À·ù ³»¿ªÀº strMessage Ç׸ñ Âü°í bool CheckFile( const std::string strProcessName, const std::string strFileName , unsigned long long& uFileSize , std::string& strErrorMessage ); // cc_collect ·Î File ÀúÀå ¸ñÀûÀ¸·Î Àü¼Û // @param strProcessName [in] ÇÁ·Î¼¼½º ¸í, ÀúÀå½Ã ÇÁ·Î¼¼½º ¸í¿¡ µû¸¥ Æú´õ »ý¼º ÈÄ ÆÄÀÏ ¼ö½Å, ÀúÀå ó¸®ÇÔ. // »ý·« °¡´ÉÇÏÁö¸¸.. '/' ¹®ÀÚ°¡ Æ÷ÇԵǼ­´Â ¾ÈµÊ. // // @param strFileName [in] ÀúÀå ÆÄÀϸí // a.log °°Àº ´Ü¼ø Çü½Ä »ç¿ë, // /a/b.log °°Àº °æ·Î Á¤º¸ Æ÷ÇԽà ¿À·ù ¹ß»ý. // // @param fd [in] Àü¼ÛÇÒ ÆÄÀÏ¿¡ ´ëÇÑ descriter // @param nFileSize [in] Àü¼ÛÇÒ ÆÄÀÏÀÇ Å©±â // 0 ÆÄÀÏ Àü¼Û °¡´É. // @param strMessage [out] ¼ö½ÅµÈ ¸Þ½ÃÁö ÀúÀå (Á¤»ó, ¿À·ù ¸ðµÎ ¸Þ½ÃÁö ¼ö½Å °¡´É) // @return // ÀúÀå ¼º°ø½Ã true // ½ÇÆÐ ¹ß»ý½Ã false, ¿À·ù ³»¿ªÀº strMessage Ç׸ñ Âü°í bool SendFile( const std::string strProcessName, const std::string strFileName , const int& fd, const unsigned long long& uFileSize , std::string& strMessage ); private: // cc_collect ·ÎºÎÅÍ available size Á¤º¸¸¦ ¿äû, °á°ú¸¦ ¼ö½Åó¸®ÇÑ´Ù. bool GetAvailableSize( unsigned long long& uSize ); private: // Packet Header Á¤º¸¸¦ Log ÆÄÀÏ¿¡ Logging ó¸® void PrintHeaderToLog(); // socket ¿¡¼­ ÁöÁ¤µÈ Å©±â¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î ³»ºÎ ÀӽùöÆÛÀÎ m_tempBuffer ¿¡ ÀúÀåó¸®. // @param size [in] read ÇÒ µ¥ÀÌÅÍ Å©±â // @return On success return true, otherwise return false. bool GetPacketData( unsigned int size ); // pValue ¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ unsigned long long (64Byte) ÇüÀ¸·Î º¯È¯Ã³¸®. unsigned long long GetDataToUInt64( BYTE * pValue, bool bConvertEndian = true ); // socket ¿¡¼­ ÁöÁ¤µÈ Å©±â¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ Àоî Ãâ·Âº¯¼ö¿¡ ÀúÀåó¸®. // @param size [in] read ÇÒ µ¥ÀÌÅÍ Å©±â // @param value [out] ÀÐÀº µ¥ÀÌÅ͸¦ ÀúÀåÇÒ string º¯¼ö // @return On success return true, otherwise return false. bool GetPacketData( unsigned int& size, std::string& value ); // Packet Á¤º¸ Áß String Á¤º¸¸¦ Àü¼ÛÇϱâ À§ÇÑ ÇÔ¼ö. bool SendString( const std::string& strData ); // Linux 5.4 ÀÇ °æ¿ì unsigned long long ÀÇ byteorder º¯È¯ÇÔ¼ö Á¦°ø ¾ÈÇÔ. // Linux 6.X, FreeBSD ¿¡¼­´Â be64toh µîÀÇ ÇÔ¼ö Á¦°ø // - Liunx 5.X Àåºñ Áö¿øÇØ¾ß ÇϹǷÎ... 64bit º¯È¯ ÇÔ¼ö °³¹ßÇÏ¿© »ç¿ë. // - ±âÁ¸ htonl µîÀÇ ÇÔ¼ö¿ÍÀÇ È¥µ¿À» ÇÇÇϱâ À§ÇØ ÇÔ¼ö¸íÀº C Style ·Î ±¸¼º. uint64_t do_htonll( uint64_t hostlonglong ); uint64_t do_ntohll( uint64_t netlonglong ); private: // Packet Header º¯¼ö struct CcCollectdPacketHeader m_packetHeader; // m_packetHeader ±¸Á¶Ã¼ÀÇ Å©±â¸¦ ÀúÀåÇϱâ À§ÇÑ »ó¼ö const int m_nPacketHeaderLen; // Packet Header ¿¡ ÀúÀåµÈ Data ºÎºÐÀÇ ±æÀÌ Á¤º¸°ª. unsigned int m_nPacketDataLen; // Packet Data ºÎºÐÀÇ ¼ö½Å󸮽à Àӽ÷Π»ç¿ëÇÒ ¹öÆÛ. BYTE m_tempBuffer[DEFAULT_SOCKET_TEMP_BUFFER_SIZE]; }; #endif /* __CC_COLLECTD_CLIENT_SOCKET_H__ */