📄 curequesthandler.cpp
字号:
//--------------------------------------------------------------------------------//// Filename : CURequestHandler.cpp// Written By : Reiot////--------------------------------------------------------------------------------// include files#include "CURequest.h"#ifdef __UPDATE_SERVER__ #include <sys/types.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <sys/sendfile.h> #include "Properties.h" #include "UpdateServerPlayer.h" #include "Upackets/UCUpdate.h" #include "Resource.h"#endif//--------------------------------------------------------------------------------//// 努扼捞攫飘啊 夸没茄 府家胶啊 粮犁窍绰瘤 眉农茄 饶,// 粮犁且 版快, sendfile()阑 荤侩秦辑 努扼捞攫飘肺 傈价茄促.////--------------------------------------------------------------------------------void CURequestHandler::execute ( CURequest * pPacket , Player * pPlayer ) throw ( ProtocolException , Error ){ __BEGIN_TRY #ifdef __UPDATE_SERVER__ UpdateServerPlayer * pUpdateServerPlayer = dynamic_cast<UpdateServerPlayer*>(pPlayer); Socket * pSocket = pUpdateServerPlayer->getSocket(); const Resource & resource = pPacket->getResource(); Version_t ClientVersion = 0; if( resource.getVersion() < 2000 ) { ClientVersion = 1; } char filename[ maxFilename + 1 ]; sprintf( filename , "%s/%s/v%05d/%s" , g_pConfig->getProperty("HomeDir").c_str() , g_pConfig->getProperty("PatchDir").c_str() ,// resource.getVersion() , ClientVersion, resource.getFilename().c_str() ); //cout << "Try to open " << filename << "..." << endl; ifstream ifile( filename , ios::in | ios::binary | ios::nocreate ); if ( !ifile ) { // 粮犁窍瘤 臼绰 颇老阑 夸没茄 巴篮 秦欧栏肺 埃林茄促. // 肺弊甫 茄 饶, BAN 矫难具 茄促. throw InvalidProtocolException(filename); } // 颇老 农扁甫 舅酒郴扁 困秦辑 颇老 器牢磐甫 盖 第肺 框流牢促. ifile.seekg( 0 , ios::end ); FileSize_t filesize = ifile.tellg(); //cout << "Original FileSize : " << filesize << endl; //cout << "Requested FileSize : " << resource.getFileSize() << endl; // 努扼捞攫飘俊辑 夸没茄 颇老狼 农扁客 促甫 版快, 秦欧 矫档肺 埃林茄促. if ( resource.getFileSize() != filesize ) { throw InvalidProtocolException("invalid filesize"); } //-------------------------------------------------------------------------------- // CURequest 俊 淬败柯 府家胶甫 促矫 UCUpdate 俊 淬酒辑 刚历 傈价茄促. // 弊促澜 颇老 郴侩阑 傈价茄促. //-------------------------------------------------------------------------------- UCUpdate ucUpdate; ucUpdate.setResource( resource ); pUpdateServerPlayer->sendPacket( &ucUpdate ); //-------------------------------------------------------------------------------- // write file content //-------------------------------------------------------------------------------- // 颇老 器牢磐甫 促矫 盖 贸澜栏肺 登倒赴促. ifile.seekg(0); long offset = 0; //cout << "=======================================================================" << endl; //cout << resource.getFilename() << " (" << filesize << "bytes) : "; // 颇老 郴侩阑 傈价茄促. DWORD nSent = sendfile( pSocket->getSOCKET() , ifile.rdbuf()->fd() , &offset, filesize ); //cout << nSent << " bytes sent to client." << endl; //cout << "=======================================================================" << endl; if ( nSent != filesize ) { throw Error("颇老 傈价 坷幅"); } // 颇老阑 摧绰促. ifile.close(); pUpdateServerPlayer->setPlayerStatus( USPS_AFTER_SENDING_UC_UPDATE );#endif __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -