diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-09 14:44:28 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-09 14:44:28 +0000 |
| commit | f25436725e2dd2a0d3ddb672415b0991ce4f2ce0 (patch) | |
| tree | 1327033b5c2d4d99d5cde6114744495c44346517 /src/FtpDownloadCommand.cc | |
| parent | 0b5e827ead424ff0a5de43bc707b52abb4badfcb (diff) | |
2008-05-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added the ability to reuse connection in FTP and it is enabled
by
default. It can be disabled by --ftp-reuse-connection=false
option.
* src/Command.cc
* src/DownloadCommand.cc
* src/FtpDownloadCommand.cc
* src/FtpDownloadCommand.h
* src/FtpFinishDownloadCommand.cc
* src/FtpFinishDownloadCommand.h
* src/FtpInitiateConnectionCommand.cc
* src/FtpNegotiationCommand.cc
* src/FtpNegotiationCommand.h
* src/HelpItemFactory.cc
* src/Makefile.am
* src/Makefile.in
* src/OptionHandlerFactory.cc
* src/option_processing.cc
* src/prefs.h
* src/usage_text.h
Diffstat (limited to 'src/FtpDownloadCommand.cc')
| -rw-r--r-- | src/FtpDownloadCommand.cc | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/FtpDownloadCommand.cc b/src/FtpDownloadCommand.cc index 87b78f02..c505e190 100644 --- a/src/FtpDownloadCommand.cc +++ b/src/FtpDownloadCommand.cc @@ -35,18 +35,47 @@ #include "FtpDownloadCommand.h" #include "Request.h" #include "Socket.h" +#include "Segment.h" +#include "DownloadEngine.h" +#include "RequestGroup.h" +#include "prefs.h" +#include "Option.h" +#include "FtpFinishDownloadCommand.h" +#include "FtpConnection.h" +#include "Logger.h" namespace aria2 { -FtpDownloadCommand::FtpDownloadCommand(int cuid, - const RequestHandle& req, - RequestGroup* requestGroup, - DownloadEngine* e, - const SocketHandle& dataSocket, - const SocketHandle& ctrlSocket) +FtpDownloadCommand::FtpDownloadCommand +(int cuid, + const RequestHandle& req, + RequestGroup* requestGroup, + const SharedHandle<FtpConnection>& ftpConnection, + DownloadEngine* e, + const SocketHandle& dataSocket, + const SocketHandle& ctrlSocket) :DownloadCommand(cuid, req, requestGroup, e, dataSocket), + _ftpConnection(ftpConnection), ctrlSocket(ctrlSocket) {} FtpDownloadCommand::~FtpDownloadCommand() {} + +bool FtpDownloadCommand::prepareForNextSegment() +{ + if(e->option->getAsBool(PREF_FTP_REUSE_CONNECTION) && + (uint64_t)_segments.front()->getPositionToWrite() == _requestGroup->getTotalLength()) { + Command* command = new FtpFinishDownloadCommand(cuid, req, _requestGroup, _ftpConnection, e, ctrlSocket); + e->commands.push_back(command); + + if(_requestGroup->downloadFinished()) { + // To run checksum checking, we had to call following function here. + DownloadCommand::prepareForNextSegment(); + } + return true; + } else { + return DownloadCommand::prepareForNextSegment(); + } +} + } // namespace aria2 |
