#include "stdafx.h" #include "Util.h" #include "WLibTorrent.h" void TokenizeW( const std::wstring& str, std::vector& tokens, const std::wstring& delimiters /* = L" "*/ ) { // ¸Ç ù ±ÛÀÚ°¡ ±¸ºÐÀÚÀÎ °æ¿ì ¹«½Ã std::wstring::size_type lastPos = str.find_first_not_of( delimiters, 0 ); // ±¸ºÐÀÚ°¡ ¾Æ´Ñ ù ±ÛÀÚ¸¦ ã´Â´Ù std::wstring::size_type pos = str.find_first_of( delimiters, lastPos ); while( std::wstring::npos != pos || std::wstring::npos != lastPos ) { // tokenÀ» ã¾ÒÀ¸´Ï vector¿¡ Ãß°¡ÇÑ´Ù tokens.push_back( str.substr( lastPos, pos - lastPos ) ); // ±¸ºÐÀÚ¸¦ ¶Ù¾î³Ñ´Â´Ù. "not_of"¿¡ ÁÖÀÇÇ϶ó lastPos = str.find_first_not_of( delimiters, pos ); // ´ÙÀ½ ±¸ºÐÀÚ°¡ ¾Æ´Ñ ±ÛÀÚ¸¦ ã´Â´Ù pos = str.find_first_of( delimiters, lastPos ); } } BOOL MakeTorrent( LPCWSTR strFullFilePath, LPCWSTR strWebSeeds, LPCWSTR strTrackers ) { std::wstring strFullFileName = strFullFilePath; std::wstring strFileName = strFullFileName; int nSlashIndex = strFileName.rfind( L"\\" ); strFileName.erase( 0, nSlashIndex + 1 ); std::wstring strMakeFileName; strMakeFileName = strFullFileName + L".torrent"; std::vector vecWstrWebSeeds; std::vector vecWstrTrackers; std::vector tokens; TokenizeW( strWebSeeds, tokens, L";" ); for( int i=0; i( tokens.size() ); i++ ) { std::wstring strWebSeed; strWebSeed = tokens[i]; nSlashIndex = strWebSeed.rfind( L"/" ); if( nSlashIndex != strWebSeed.length() - 1 ) strWebSeed += L"/"; strWebSeed += strFileName; vecWstrWebSeeds.push_back( strWebSeed ); } tokens.clear(); TokenizeW( strTrackers, tokens, L";" ); for( int i=0; i( tokens.size() ); i++ ) { vecWstrTrackers.push_back( tokens[i] ); } tokens.clear(); BOOL bMake = WLibTorrent::GetInstance()->MakeTorrent( strFullFileName.c_str(), vecWstrWebSeeds, vecWstrTrackers, strMakeFileName.c_str(), L"DN" ); vecWstrWebSeeds.clear(); vecWstrTrackers.clear(); WLibTorrent::DestroyInstance(); return bMake; }