/*************************************************************************** ftsd control interface ( File Replication & Cache & Move & Delete Control) Header ( FtsdSocketControl.h ) ----------------------------------------- begin : 2010/03/09 copyright : (C) 2005 SolutionBox Inc. author : Service 1 Team email : svc1@solbox.com version : 3.2.0.R0811 CopyRight(C) 2005 SolutionBox Inc. All Rights reserved. Redistribution and use in source and binary forms, with or with out modification, are not permitted in outside of SolutionBox Inc. ***************************************************************************/ #ifndef __FTSD_SOCKET_CONTROL_H__ #define __FTSD_SOCKET_CONTROL_H__ #include "BaseSocket.h" #include "FtsdProtocol.h" #include #include #include ///< BYTE ŸÀÔ Á¤ÀÇ #ifndef _BYTE_DEFINED #define _BYTE_DEFINED typedef unsigned char BYTE; #endif // _BYTE_DEFINED #define DEFAULT_SOCKET_TEMP_BUFFER_SIZE 1024 // SocketControl ¿¡¼­ »ç¿ëÇÒ ÀӽùöÆÛ Å©±â. class CFtsdSocketControl : public CBaseSocket { private: /// @brief Packet Header º¯¼ö struct FileTransferPacketHeader m_packetHeader; /// @brief m_packetHeader ±¸Á¶Ã¼ÀÇ Å©±â¸¦ ÀúÀåÇϱâ À§ÇÑ »ó¼ö const int m_nPacketHeaderLen; /// @brief Packet Header ¿¡ ÀúÀåµÈ Data ºÎºÐÀÇ ±æÀÌ Á¤º¸°ª. unsigned int m_nPacketDataLen; /// @brief Packet Data ºÎºÐÀÇ ¼ö½Å󸮽à Àӽ÷Π»ç¿ëÇÒ ¹öÆÛ. BYTE m_tempBuffer[DEFAULT_SOCKET_TEMP_BUFFER_SIZE]; public: /// @brief »ý¼ºÀÚ. CFtsdSocketControl(); /// @brief ¼Ò¸êÀÚ. ~CFtsdSocketControl(); /// @brief Àü´Þ¹ÞÀº Target À¸·Î Socket Á¢¼ÓÀ» ¼öÇà /// @param szTarget [in] Á¢¼Ó ´ë»ó Host name ¶Ç´Â IP /// @param nPort [in] Á¢¼Ó Port /// @return Á¢¼Ó ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. ( ¿À·ù ³»¿ªÀº ·Î±ë󸮵Ê.) bool ConnectTarget( const std::string& szTarget, int nPort ); /// @brief ´ë»ó°ú ¿¬°áµÈ Socket À» ÅëÇØ ftsd ·Î File Replication ¸í·É Àü¼Û. /// @param szFileName [in] º¹Á¦ÇÒ ¿øº» Source ÆÄÀϸí (/stg/node0/186/abcde..) /// @param nFileSize [in] º¹Á¦ÇÒ ¿øº» Source ÆÄÀÏÀÇ Å©±â. /// @param szTargetTranId [in] RC °£ º¹Á¦ 󸮽à º¯°æÇÒ ´ë»ó Tran ID Á¤º¸ °ª. /// @param nFileHashCheckLevel [in] File ¿¡ ´ëÇÑ Hash Check Level Á¤º¸ ( conf ÆÄÀÏ¿¡ ÁöÁ¤µÊ) /// @param bUseInternalIp [in] ³»ºÎ¸ÁÀ» ÀÌ¿ëÇÏ¿© ÆÄÀÏ ¼Û¼ö½ÅÀ» ¼öÇàÇÒÁö ¿©ºÎ \n ///< ÇØ´ç°ªÀ» true ·Î ÁöÁ¤½Ã ftsd »ó¿¡¼­ ³»ºÎ¸ÁÀ» ¿ì¼± »ç¿ëÇÏ¿© ÆÄÀÏ º¹Á¦ ½Ãµµ ///< ¸¸¾à ³»ºÎ¸Á »ç¿ë ºÒ°¡½Ã ÀÚµ¿À¸·Î ¿ÜºÎ¸Á »ç¿ë. ///< RC-RC °£ 󸮽ÿ¡´Â »ç¿ëÇÏÁö ¾Êµµ·Ï false ·Î ÁöÁ¤ÇÒ °Í. /// @param vecTargetFhs [in] º¹Á¦ ´ë»ó Target FHS Host Name Á¤º¸ /// @return Replication º¹Á¦ ¿äû ¸Þ½ÃÁö Àü¼Û ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. bool SendFileReplicationRequest(const std::string& szFileName, unsigned long long nFileSize, int nFileHashCheckLevel, bool bUseInternalIp, std::vector< std::string >& vecTargetFhs); bool SendFileReplicationRequest(const std::string& szFileName, unsigned long long nFileSize, const std::string& szTargetTranId, int nFileHashCheckLevel, bool bUseInternalIp, std::vector< std::string >& vecTargetFhs); /// @brief File Replication ¿äû¿¡ ´ëÇÑ Ã³¸® °á°ú¸¦ ftsd ·Î ºÎÅÍ ¼ö½ÅÇÑ´Ù. /// @param nTimeout [in] ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ Blocking À» ¹æÁöÇϱâ À§ÇÑ Timeout ¼³Á¤°ª. ´ÜÀ§( second )\n ///< ÁöÁ¤µÈ ½Ã°£µ¿¾È ÀÀ´äÀ» ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì 0 À» ¹Ýȯ. /// @param bSuccess [out] File Replication ÀÌ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´ÂÁö ¿©ºÎ \n ///< trnsfer »ó¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì ÀÌ °ªÀº false °¡ µÇ¸ç \n ///< szErrorMessage º¯¼ö»ó¿¡ ¿À·ù³»¿ëÀÌ ÀúÀåµÊ. \n ///< Á¤»óÀûÀ¸·Î ó¸®µÈ °æ¿ì true °¡ ÀúÀåµÇ¸ç \n ///< mapSuccessFhs, mapFailFhs »ó¿¡ °ü·Ã Á¤º¸°¡ ÀúÀåµÊ. /// @param szErrorMessage [out] bSuccess == false ÀÎ °æ¿ì ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå /// @param mapSuccessFhs [out] bSuccess == true ÀÎ °æ¿ì \n ///< Replication 󸮿¡ ¼º°øÇÑ FHS ¹× ÀúÀåµÈ File À̸§ Á¤º¸¸¦ ÀúÀå /// @param mapFailFhs [out] bSuccess == true ÀÎ °æ¿ì \n ///< Replication 󸮿¡ ½ÇÆÐÇÑ FHS Host Name ¹× ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå. /// /// @return -1 : Socket Åë½Å °ü·Ã ¿À·ù ¹ß»ýÇÏ¿© ftsd ¿Í ¿¬°áÀÌ ²÷¾îÁø °æ¿ì \n ///< => ftsd ¿Í ¿¬°áÀÌ ³¡¾îÁø°ÍÀ¸·Î ÆÇ´ÜÇÏ°í ¿À·ùó¸®ÇÑ´Ù. \n ///< ///< 0 : ÀԷº¯¼öÀÎ nTimeout ¿¡ ÁöÁ¤µÈ ½Ã°£¾È¿¡ ftsd ·ÎºÎÅÍ ///< Replication ¿¡ ´ëÇÑ Ã³¸® °á°ú Á¤º¸¸¦ ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì. \n ///< ÀÌ ±â´ÉÀº º» ÇÔ¼ö È£Ãâ½Ã Blocking ¹ß»ýÀ» ¸·±â À§ÇÑ ±â´ÉÀ¸·Î¼­ \n ///< ÀÌ °ªÀÌ ¹ÝȯµÈ °æ¿ì Ãß°¡ ´Ù¸¥ ÀÛ¾÷À» ÁøÇàÇÑ ÈÄ º» ÇÔ¼ö¸¦ ´Ù½Ã È£ÃâÇÏ¿© \n ///< ÀÀ´äÀ» ´ë±âÇÒ ¼ö ÀÖ´Ù. \n ///< ///< 1 : ÆÄÀÏ º¹Á¦ 󸮿¡ ´ëÇÑ ÀÀ´äÀ» ¼ö½ÅÇÑ °æ¿ì, Output ÀÎÀÚÀÎ bSuccess ¸¦ È®ÀÎÇÏ¿© ó¸® °á°ú È®ÀÎ ///< ///< 2 : ftsd ·Î ºÎÅÍ Data À» ¼ö½ÅÇÏ¿´À¸³ª File Replication ¿äû¿¡ ´ëÇÑ ÀÀ´äÀÌ ¾Æ´Ñ °æ¿ì \n ///< ÇØ´ç Á¤º¸´Â º» Ŭ·¡½ºÀÇ ¸â¹öº¯¼ö »ó¿¡ ³»ºÎÀûÀ¸·Î ÀúÀåµÈ´Ù. ( ´Ü Alive Packet Àº ¾Æ´Ô) \n ///< º» °á°ú°¡ ¼ö½ÅµÈ °æ¿ì ¹«½Ã ó¸®ÇÏ°í °è¼Ó ÀÀ´äÀ» ´ë±âÇÏ¸é µÈ´Ù. int GetFileReplicationResult( int nTimeout, bool& bSuccess, std::string& szErrorMessage, std::map< std::string, std::string>& mapSuccessFhs, std::map< std::string, std::string>& mapFailFhs ); /// @brief ´ë»ó°ú ¿¬°áµÈ Socket À» ÅëÇØ ftsd ·Î File Cache ¸í·É Àü¼Û. /// @param szFileName [in] Cache ó¸®ÇÒ ¿øº» Source ÆÄÀϸí (/stg/node0/186/abcde..) /// @param nFileSize [in] Cache ó¸®ÇÒ ¿øº» Source ÆÄÀÏÀÇ Å©±â. /// @param nFileHashCheckLevel [in] File ¿¡ ´ëÇÑ Hash Check Level Á¤º¸ ( conf ÆÄÀÏ¿¡ ÁöÁ¤µÊ) /// @param bUseInternalIp [in] ³»ºÎ¸ÁÀ» ÀÌ¿ëÇÏ¿© ÆÄÀÏ ¼Û¼ö½ÅÀ» ¼öÇàÇÒÁö ¿©ºÎ \n ///< ÇØ´ç°ªÀ» true ·Î ÁöÁ¤½Ã ftsd »ó¿¡¼­ ³»ºÎ¸ÁÀ» ¿ì¼± »ç¿ëÇÏ¿© ÆÄÀÏ º¹Á¦ ½Ãµµ ///< ¸¸¾à ³»ºÎ¸Á »ç¿ë ºÒ°¡½Ã ÀÚµ¿À¸·Î ¿ÜºÎ¸Á »ç¿ë. /// @param vecTargetFhs [in] Cache ´ë»ó Target FHS Host Name Á¤º¸ /// @return Cache ¿äû ¸Þ½ÃÁö Àü¼Û ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. bool SendFileCacheRequest(const std::string& szFileName, unsigned long long nFileSize, int nFileHashCheckLevel, bool bUseInternalIp, std::vector< std::string >& vecTargetFhs); /// @brief File Cache ¿äû¿¡ ´ëÇÑ Ã³¸® °á°ú¸¦ ftsd ·Î ºÎÅÍ ¼ö½ÅÇÑ´Ù. /// @param nTimeout [in] ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ Blocking À» ¹æÁöÇϱâ À§ÇÑ Timeout ¼³Á¤°ª. ´ÜÀ§( second )\n ///< ÁöÁ¤µÈ ½Ã°£µ¿¾È ÀÀ´äÀ» ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì 0 À» ¹Ýȯ. /// @param bSuccess [out] File Cache 󸮰¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´ÂÁö ¿©ºÎ \n ///< trnsfer »ó¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì ÀÌ °ªÀº false °¡ µÇ¸ç \n ///< szErrorMessage º¯¼ö»ó¿¡ ¿À·ù³»¿ëÀÌ ÀúÀåµÊ. \n ///< Á¤»óÀûÀ¸·Î ó¸®µÈ °æ¿ì true °¡ ÀúÀåµÇ¸ç \n ///< mapSuccessFhs, mapFailFhs »ó¿¡ °ü·Ã Á¤º¸°¡ ÀúÀåµÊ. /// @param szErrorMessage [out] bSuccess == false ÀÎ °æ¿ì ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå /// @param mapSuccessFhs [out] bSuccess == true ÀÎ °æ¿ì \n ///< Cache 󸮿¡ ¼º°øÇÑ FHS ¹× ÀúÀåµÈ File À̸§ Á¤º¸¸¦ ÀúÀå /// @param mapFailFhs [out] bSuccess == true ÀÎ °æ¿ì \n ///< Cache 󸮿¡ ½ÇÆÐÇÑ FHS Host Name ¹× ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå. /// /// @return -1 : Socket Åë½Å °ü·Ã ¿À·ù ¹ß»ýÇÏ¿© ftsd ¿Í ¿¬°áÀÌ ²÷¾îÁø °æ¿ì \n ///< => ftsd ¿Í ¿¬°áÀÌ ³¡¾îÁø°ÍÀ¸·Î ÆÇ´ÜÇÏ°í ¿À·ùó¸®ÇÑ´Ù. \n ///< ///< 0 : ÀԷº¯¼öÀÎ nTimeout ¿¡ ÁöÁ¤µÈ ½Ã°£¾È¿¡ ftsd ·ÎºÎÅÍ ///< Cache ¿¡ ´ëÇÑ Ã³¸® °á°ú Á¤º¸¸¦ ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì. \n ///< ÀÌ ±â´ÉÀº º» ÇÔ¼ö È£Ãâ½Ã Blocking ¹ß»ýÀ» ¸·±â À§ÇÑ ±â´ÉÀ¸·Î¼­ \n ///< ÀÌ °ªÀÌ ¹ÝȯµÈ °æ¿ì Ãß°¡ ´Ù¸¥ ÀÛ¾÷À» ÁøÇàÇÑ ÈÄ º» ÇÔ¼ö¸¦ ´Ù½Ã È£ÃâÇÏ¿© \n ///< ÀÀ´äÀ» ´ë±âÇÒ ¼ö ÀÖ´Ù. \n ///< ///< 1 : ÆÄÀÏ Cache 󸮿¡ ´ëÇÑ ÀÀ´äÀ» ¼ö½ÅÇÑ °æ¿ì, Output ÀÎÀÚÀÎ bSuccess ¸¦ È®ÀÎÇÏ¿© ó¸® °á°ú È®ÀÎ ///< ///< 2 : ftsd ·Î ºÎÅÍ Data À» ¼ö½ÅÇÏ¿´À¸³ª File Cache ¿äû¿¡ ´ëÇÑ ÀÀ´äÀÌ ¾Æ´Ñ °æ¿ì \n ///< ÇØ´ç Á¤º¸´Â º» Ŭ·¡½ºÀÇ ¸â¹öº¯¼ö »ó¿¡ ³»ºÎÀûÀ¸·Î ÀúÀåµÈ´Ù. ( ´Ü Alive Packet Àº ¾Æ´Ô) \n ///< º» °á°ú°¡ ¼ö½ÅµÈ °æ¿ì ¹«½Ã ó¸®ÇÏ°í °è¼Ó ÀÀ´äÀ» ´ë±âÇÏ¸é µÈ´Ù. int GetFileCacheResult( int nTimeout, bool& bSuccess, std::string& szErrorMessage, std::map< std::string, std::string>& mapSuccessFhs, std::map< std::string, std::string>& mapFailFhs ); /// @brief ´ë»ó°ú ¿¬°áµÈ Socket À» ÅëÇØ ftsd ·Î Content Check ¸í·É Àü¼Û. /// @param szFileName [in] ¿øº» Source ÆÄÀϸí (/stg/node0/186/abcde..) /// @param bHashCheck [in] Hash °ªÀ» ÃßÃâÇÒÁö ¿©ºÎ /// @param nHashCheckSize [in] Hash °ªÀ» ÃßÃâÇÒ °æ¿ì Size ¼³Á¤°ª ( MByte ´ÜÀ§ )\n ///< 0 : Content ¿¡ ´ëÇÑ Àüü Hash °ªÀ» ÃßÃâÇÔ. ///< ¼ýÀÚ : Content ÀÇ ¾Õ ºÎºÐºÎÅÍ ÁöÁ¤µÈ Å©±â (MByte ) ±îÁö Hash °ªÀ» ÃßÃâ /// @return Check ¿äû ¸Þ½ÃÁö Àü¼Û ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. bool SendFileCheckRequest(const std::string& szFileName, bool bHashCheck, unsigned long long nHashCheckSize ); /// @brief File Check ¿äû¿¡ ´ëÇÑ Ã³¸® °á°ú¸¦ ftsd ·Î ºÎÅÍ ¼ö½ÅÇÑ´Ù. /// @param nTimeout [in] ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ Blocking À» ¹æÁöÇϱâ À§ÇÑ Timeout ¼³Á¤°ª. ´ÜÀ§( second )\n ///< ÁöÁ¤µÈ ½Ã°£µ¿¾È ÀÀ´äÀ» ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì 0 À» ¹Ýȯ. /// @param bSuccess [out] File Check 󸮰¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´ÂÁö ¿©ºÎ \n ///< ftsd »ó¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì ÀÌ °ªÀº false °¡ µÇ¸ç \n ///< szErrorMessage º¯¼ö»ó¿¡ ¿À·ù³»¿ëÀÌ ÀúÀåµÊ. \n ///< Á¤»óÀûÀ¸·Î ó¸®µÈ °æ¿ì true °¡ ÀúÀåµÇ¸ç \n ///< nFileSize, szHashValue »ó¿¡ °á°ú Á¤º¸°¡ ÀúÀåµÊ. /// @param szErrorMessage [out] bSuccess == false ÀÎ °æ¿ì ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå /// @param nFileSize [out] bSuccess == true ÀÎ °æ¿ì ¿äûÇÑ Content ¿¡ ´ëÇÑ file size Á¤º¸¸¦ ÀúÀå. ( Byte ´ÜÀ§ ) /// @param szHashValue [out] bSuccess == true À̰í... Hash °ª ÃßÃâÀ» ¿äûÇÑ °æ¿ì ÃßÃâµÈ Hash °ª Á¤º¸¸¦ ÀúÀå. /// @return -1 : Socket Åë½Å °ü·Ã ¿À·ù ¹ß»ýÇÏ¿© ftsd ¿Í ¿¬°áÀÌ ²÷¾îÁø °æ¿ì \n ///< => ftsd ¿Í ¿¬°áÀÌ ³¡¾îÁø°ÍÀ¸·Î ÆÇ´ÜÇÏ°í ¿À·ùó¸®ÇÑ´Ù. \n ///< ///< 0 : ÀԷº¯¼öÀÎ nTimeout ¿¡ ÁöÁ¤µÈ ½Ã°£¾È¿¡ ftsd À¸·ÎºÎÅÍ Ã³¸® °á°ú Á¤º¸¸¦ ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì. \n ///< ÀÌ ±â´ÉÀº º» ÇÔ¼ö È£Ãâ½Ã Blocking ¹ß»ýÀ» ¸·±â À§ÇÑ ±â´ÉÀ¸·Î¼­ \n ///< ÀÌ °ªÀÌ ¹ÝȯµÈ °æ¿ì Ãß°¡ ´Ù¸¥ ÀÛ¾÷À» ÁøÇàÇÑ ÈÄ º» ÇÔ¼ö¸¦ ´Ù½Ã È£ÃâÇÏ¿© \n ///< ÀÀ´äÀ» ´ë±âÇÒ ¼ö ÀÖ´Ù. \n ///< ///< 1 : ÆÄÀÏ Check 󸮿¡ ´ëÇÑ ÀÀ´äÀ» ¼ö½ÅÇÑ °æ¿ì, Output ÀÎÀÚÀÎ bSuccess ¸¦ È®ÀÎÇÏ¿© ó¸® °á°ú È®ÀÎ ///< ///< 2 : ftsd À¸·Î ºÎÅÍ Data À» ¼ö½ÅÇÏ¿´À¸³ª File Check ¿äû¿¡ ´ëÇÑ ÀÀ´äÀÌ ¾Æ´Ñ °æ¿ì \n ///< ÇØ´ç Á¤º¸´Â º» Ŭ·¡½ºÀÇ ¸â¹öº¯¼ö »ó¿¡ ³»ºÎÀûÀ¸·Î ÀúÀåµÈ´Ù. ( ´Ü Alive Packet Àº ¾Æ´Ô) \n ///< º» °á°ú°¡ ¼ö½ÅµÈ °æ¿ì ¹«½Ã ó¸®ÇÏ°í °è¼Ó ÀÀ´äÀ» ´ë±âÇÏ¸é µÈ´Ù. int GetFileCheckResult( int nTimeout, bool& bSuccess, std::string& szErrorMessage, unsigned long long& nFileSize, std::string& szHashValue ); /// @brief ´ë»ó°ú ¿¬°áµÈ Socket À» ÅëÇØ ftsd ·Î Unlink ¸í·É Àü¼Û. /// @param szFileName [in] ¿øº» Source ÆÄÀϸí (/stg/node0/186/abcde..) /// @param nFileSize [in] ¿øº» ÆÄÀÏÀÇ Å©±â ( Byte ´ÜÀ§ ) /// @param bForceUnlink [in] °­Á¦ »èÁ¦ ó¸® ¿©ºÎ ( Defalult false ) /// false : ÀϹݸðµå - ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇϰí Size °ªÀÌ µ¿ÀÏÇÒ °æ¿ì¿¡¸¸ »èÁ¦Ã³¸®.. ³ª¸ÓÁö´Â ¿À·ù·Î ó¸®. /// true : °­Á¦¸ðµå - ÇØ´ç ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê°Å³ª.. Size °¡ Ʋ·Áµµ °­Á¦·Î »èÁ¦ ó¸®.. ¿À·ù´Â Åë½Å, ½Ã½ºÅÛ ¿À·ù ¹ß»ý½Ã¿¡¸¸ /// @return Unlink ¿äû ¸Þ½ÃÁö Àü¼Û ¼º°ø½Ã true, ½ÇÆÐ½Ã false ¹Ýȯ. bool SendFileUnlinkRequest(const std::string& szFileName, unsigned long long nFileSize, bool bForceUnlink = false ); /// @brief File Unlink ¿äû¿¡ ´ëÇÑ Ã³¸® °á°ú¸¦ ftsd ·Î ºÎÅÍ ¼ö½ÅÇÑ´Ù. /// @param nTimeout [in] ÇÔ¼ö È£Ãâ¿¡ ´ëÇÑ Blocking À» ¹æÁöÇϱâ À§ÇÑ Timeout ¼³Á¤°ª. ´ÜÀ§( second )\n ///< ÁöÁ¤µÈ ½Ã°£µ¿¾È ÀÀ´äÀ» ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì 0 À» ¹Ýȯ. /// @param bSuccess [out] File unlink 󸮰¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾ú´ÂÁö ¿©ºÎ \n ///< ftsd »ó¿¡¼­ ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì ÀÌ °ªÀº false °¡ µÇ¸ç \n ///< szErrorMessage º¯¼ö»ó¿¡ ¿À·ù³»¿ëÀÌ ÀúÀåµÊ. \n ///< Á¤»óÀûÀ¸·Î ó¸®µÈ °æ¿ì true °¡ ÀúÀåµÇ¸ç µû·Î ¼ö½ÅÇÏ´Â Data ´Â ¾øÀ½. \n /// @param szErrorMessage [out] bSuccess == false ÀÎ °æ¿ì ¹ß»ýµÈ ¿À·ù¸Þ½ÃÁö Á¤º¸¸¦ ÀúÀå /// @return -1 : Socket Åë½Å °ü·Ã ¿À·ù ¹ß»ýÇÏ¿© ftsd ¿Í ¿¬°áÀÌ ²÷¾îÁø °æ¿ì \n ///< => ftsd ¿Í ¿¬°áÀÌ ³¡¾îÁø°ÍÀ¸·Î ÆÇ´ÜÇÏ°í ¿À·ùó¸®ÇÑ´Ù. \n ///< ///< 0 : ÀԷº¯¼öÀÎ nTimeout ¿¡ ÁöÁ¤µÈ ½Ã°£¾È¿¡ ftsd À¸·ÎºÎÅÍ Ã³¸® °á°ú Á¤º¸¸¦ ¼ö½ÅÇÏÁö ¸øÇÑ °æ¿ì. \n ///< ÀÌ ±â´ÉÀº º» ÇÔ¼ö È£Ãâ½Ã Blocking ¹ß»ýÀ» ¸·±â À§ÇÑ ±â´ÉÀ¸·Î¼­ \n ///< ÀÌ °ªÀÌ ¹ÝȯµÈ °æ¿ì Ãß°¡ ´Ù¸¥ ÀÛ¾÷À» ÁøÇàÇÑ ÈÄ º» ÇÔ¼ö¸¦ ´Ù½Ã È£ÃâÇÏ¿© \n ///< ÀÀ´äÀ» ´ë±âÇÒ ¼ö ÀÖ´Ù. \n ///< ///< 1 : ÆÄÀÏ Unlink 󸮿¡ ´ëÇÑ ÀÀ´äÀ» ¼ö½ÅÇÑ °æ¿ì, Output ÀÎÀÚÀÎ bSuccess ¸¦ È®ÀÎÇÏ¿© ó¸® °á°ú È®ÀÎ ///< ///< 2 : ftsd À¸·Î ºÎÅÍ Data À» ¼ö½ÅÇÏ¿´À¸³ª File Unlink ¿äû¿¡ ´ëÇÑ ÀÀ´äÀÌ ¾Æ´Ñ °æ¿ì \n ///< ÇØ´ç Á¤º¸´Â º» Ŭ·¡½ºÀÇ ¸â¹öº¯¼ö »ó¿¡ ³»ºÎÀûÀ¸·Î ÀúÀåµÈ´Ù. ( ´Ü Alive Packet Àº ¾Æ´Ô) \n ///< º» °á°ú°¡ ¼ö½ÅµÈ °æ¿ì ¹«½Ã ó¸®ÇÏ°í °è¼Ó ÀÀ´äÀ» ´ë±âÇÏ¸é µÈ´Ù. int GetFileUnlinkResult( int nTimeout, bool& bSuccess, std::string& szErrorMessage ); /// @brief ¿¬°áµÈ Socket Åë½ÅÀ» ÀÌ¿ëÇÏ¿© ³»ºÎÀûÀ¸·Î Á¤ÀÇµÈ Alive Check ÆÐŶ Àü¼Û \n ///< => ÇØ´ç ÆÐŶ¿¡ ´ëÇÑ Ã³¸®´Â ³»ºÎÀûÀ¸·Î ó¸®µÇ¾î °á°ú°ªÀ» È®ÀÎÇÒ ÇÊ¿ä´Â ¾ø´Ù. /// @return Socket ¿¬°á ÇØÁ¦ ¶Ç´Â Àü¼Û °ü·Ã ¿À·ù ¹ß»ý½Ã false, Àü¼Û ¼º°ø½Ã¿¡´Â true ¹Ýȯ. bool SendAliveCheck(void); /// @brief Packet Header Á¤º¸¸¦ Log ÆÄÀÏ¿¡ Logging ó¸® ( Debug 󸮸¦ À§ÇÑ ÇÔ¼ö) void PrintHeaderToLog(void); protected: /// @brief Packet Header ºÎºÐÀÇ ¼ö½Å 󸮸¦ À§ÇÑ ÇÔ¼ö. Alive Check ¿äû ÆÐŶÀº ÀÚµ¿À¸·Î ¹«½Ãó¸®ÇÔ. /// @param timeout [in] ´ë±â½Ã°£. /// @retrun ¼º°ø½Ã true, ¿À·ù ¹ß»ý¹× ½ÇÆÐ½Ã fasle ¹Ýȯ. bool GetPacketHeader(int timeout = DEFAULT_DATA_RECEIVE_TIMEOUT); /// @brief 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 ); /// @brief socket ¿¡¼­ ÁöÁ¤µÈ Å©±â¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î ³»ºÎ ÀӽùöÆÛÀÎ m_tempBuffer ¿¡ ÀúÀåó¸®. /// @param size [in] read ÇÒ µ¥ÀÌÅÍ Å©±â /// @return On success return true, otherwise return false. bool GetPacketData( unsigned int size ); /// @brief pValue ¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ unsigned int ÇüÀ¸·Î º¯È¯Ã³¸® ¹× Endian º¯È¯ unsigned int GetDataToUInt( BYTE * pValue, bool bConvertEndian = true ); /// @brief pValue ¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ unsigned long long (64Byte) ÇüÀ¸·Î º¯È¯Ã³¸®. unsigned long long GetDataToUInt64( BYTE * pValue ); }; #endif /* __FTSD_SOCKET_CONTROL_H__ */