#include #include #include #include #include "Logger.h" #include "FtsdSocketControl.h" #define LOG_PATH "/user/service/logs" // Log ÆÄÀÏÀº /user/service/logs/sample/sample_³¯Â¥.log ·Î »ý¼ºµÊ. #define TRANSFER_LISTEN_PORT 14001 // ftsd ÀÇ Listen Port int main() { ///////////// 1. ±âº» Á¤º¸ ¼³Á¤ /////////////////// // Source Àåºñ Host Name //std::string szSourceHostName = "bd-16-fhs001.ktsh.co.kr"; //std::string szSourceHostName = "nh-61-fhs018.x-cdn.com"; std::string szSourceHostName = "nh-61-fhs005.x-cdn.com"; // Source ÆÄÀϸí ( Mount À§Ä¡±îÁö Æ÷ÇÔÇÔ Àüü °æ·Î ) //std::string szFileName = "/stg/node0/348/d31e2f9043ac62d273c1fd87008a6c86"; //std::string szFileName = "/stg/node0/10m_1"; //std::string szFileName = "/stg/node0/600/2139178cdcacb3ba2a2ca9533bee7fbf"; //std::string szFileName = "/stg/node2/600/616964e59ed7ee956470f88c271cbe68"; //std::string szFileName = "/stg/node0/594/fdd9a1f5b32f062622254fb7c5b4c537"; std::string szFileName = "/stg/node0/594/f962ec80bb5e3257e95925305f6a7296"; // Hash Á¤º¸ ÃßÃâ ¿©ºÎ bool bHashCheck = true; // Hash ÃßÃâ size ( 0 : Àüü... ¼ýÀÚ°ª : ¾ÕºÎºÐºÎÅÍ ÁöÁ¤µÈ À§Ä¡ÀÇ ±îÁö MByte ´ÜÀ§ÀÓ ) //unsigned long long nHashCheckSize = 10; unsigned long long nHashCheckSize = 0; ////////////// °á°ú°ªÀ» ÀúÀåÇÒ º¯¼ö ////////////////// // File Size unsigned long long nFileSize = 0; // Hash ÃßÃâ°ª std::string szHashValue; // ¿À·ù ¸Þ½ÃÁö std::string szErrorMessage; ////////////// Sample ÄÚµå ////////////// // Log ó¸®¿ë °´Ã¼ »ý¼º ¹× ÃʱâÈ­. if( CLogger::Init( PROG_NAME, LOG_PATH, LDBG ) == false ) { std::cout << "[error] Logger object created failed.." << std::endl; return 0; } // Start logging _LOG( LINF, "ftsd check sample Start: Source[%s]", szFileName.c_str()); // ftsd ¿Í Åë½ÅÀ» ó¸®ÇÒ Socket Control °´Ã¼ »ý¼º ¹× Á¢¼Ó CFtsdSocketControl ftsdSocket; if( ftsdSocket.ConnectTarget( szSourceHostName, TRANSFER_LISTEN_PORT ) == false ) { // Source ftsd À¸·Î Á¢¼Ó ½ÇÆÐ½Ã _LOG( LERR, "Source FHS connect fail. [%s][%d]", szSourceHostName.c_str(), TRANSFER_LISTEN_PORT ); return EXIT_FAILURE; } // ftsd ·Î ÆÄÀÏ¿¡ ´ëÇÑ Check ¿äû Àü´Þ // SendFileCheckRequest() ÇÔ¼ö´Â FtsdSocketControl.h ÆÄÀÏ ÂüÁ¶. if( ftsdSocket.SendFileCheckRequest( szFileName, bHashCheck, nHashCheckSize ) == false ) { // Source ftsd ·Î Àü¼Û ½ÇÆÐ½Ã _LOG( LERR, "Check Request send fail.[%s][%s]", szSourceHostName.c_str(), szFileName.c_str()); return EXIT_FAILURE; } // ¿äû¿¡ ´ëÇÑ ÀÀ´ä ´ë±â int nTimeout = 5; // ÀÀ´ä ´ë±â ½Ã°£ ( sec ) int nResult = 0; bool bResultSuccess; // ó¸® °á°úÀÇ ¼º°ø/½ÇÆÐ ¿©ºÎ¸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö. // ·çÇÁ¸¦ µ¹¸é¼­ ¿äû¿¡ ´ëÇÑ ÀÀ´äÀ» ´ë±â while(1) { // nTimeout ¿¡ ÁöÁ¤µÈ ½Ã°£µ¿¾È ÀÀ´ä´ë±â ½Ãµµ // GetFileCheckResult() ÇÔ¼ö´Â SocketControl.h ÆÄÀÏ Âü°í. nResult = ftsdSocket.GetFileCheckResult( nTimeout, bResultSuccess, szErrorMessage, nFileSize, szHashValue ); if( nResult == -1 ) { // Socket Åë½Å °ü·Ã ¿À·ù ¶Ç´Â Á¢¼Ó Á¾·á°¡ ¹ß»ýÇÑ °æ¿ì. // ÇØ´ç ³»¿ª ·Î±ë ¹× ·çÇÁ Á¾·á _LOG( LERR, "ftsd Response wait fail by socket [%s][%s]", szSourceHostName.c_str(), szFileName.c_str() ); break; } else if( nResult == 0 ) { // ÁöÁ¤µÈ ½Ã°£ µ¿¾È ÀÀ´ä´ë±â Áß Ã³¸® °á°ú Á¤º¸°¡ ¾ÆÁ÷ ¼ö½ÅµÇÁö ¾ÊÀº °æ¿ì => Allive Check ÆÐŶ Çѹø ½î°í ´Ù½Ã Loop ·Î if( ftsdSocket.SendAliveCheck() == false ) { // Alive Àü¼Û ½ÇÆÐ½Ã => Socket Á¾·á ¹× ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ìÀÓ. _LOG( LERR, "ftsd Response wait fail by socket2 [%s][%s]", szSourceHostName.c_str(), szFileName.c_str() ); break; } // Á¤»óÀûÀÎ °æ¿ì ´Ù½Ã ÀÀ´ä´ë±â. continue; } else if( nResult == 1 ) { // ¿äû¿¡ ´ëÇÑ Ã³¸®°á°ú Á¤º¸°¡ ¼ö½ÅµÈ °æ¿ì. // ÇØ´ç Á¤º¸ ·Î±ëó¸®. if( bResultSuccess == true ) { // ¿äû¿¡ ´ëÇÑ Ã³¸®°¡ Á¤»óÀûÀ¸·Î ó¸®µÈ °æ¿ì //_LOG( LINF, "[%s] Result SUCCESS [%llu][%s]", szFileName.c_str(), nFileSize, szHashValue.c_str()); _LOG( LINF, "Result size [%llu]", nFileSize ); _LOG( LINF, "Result Hash [%s]", szHashValue.c_str()); } else { // ¿À·ù ¹ß»ý½Ã _LOG( LINF, "[%s][%s] Result ERROR [%s]", szFileName.c_str(), szSourceHostName.c_str(), szErrorMessage.c_str() ); } break; // ÀÀ´äÀ» ¹Þ¾ÒÀ¸´Ï ÀÀ´ä ´ë±â ·çÇÁ Á¾·á } else { // Replication ¿äû¿¡ ´ëÇÑ ÀÀ´äÆÐŶÀÌ ¾Æ´Ñ °æ¿ì. // ÇØ´ç ÆÐŶÀº ¹«½ÃÇÏ°í ´Ù½Ã Loop ·Î continue; } } // End logging _LOG( LINF, "ftsd check sample process End [%s][%s]", szSourceHostName.c_str(), szFileName.c_str()); _LOG( LINF, "-------------------------------------------------------------------------------" ); CLogger::Exit(); return EXIT_SUCCESS; }