#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"; // Source ÆÄÀϸí ( Mount À§Ä¡±îÁö Æ÷ÇÔÇÔ Àüü °æ·Î ) //std::string szFileName = "/stg/node0/10m_1.bak"; std::string szFileName = "/stg/node0/huibong.txt"; // File Size unsigned long long nFileSize = 0; ////////////// °á°ú°ªÀ» ÀúÀåÇÒ º¯¼ö ////////////////// // ¿À·ù ¸Þ½ÃÁö 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 unlink 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.SendFileUnlinkRequest( szFileName, nFileSize, true ) == false ) { // Source ftsd ·Î Àü¼Û ½ÇÆÐ½Ã _LOG( LERR, "Unlink 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.GetFileUnlinkResult( nTimeout, bResultSuccess, szErrorMessage); 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, "Unlink result SUCCESS."); } 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; }