Revert "Cleanup AbstractCommand"

This reverts commit 0465aa5455.
pull/235/head
Nils Maier 2014-05-29 18:21:49 +02:00
parent 0465aa5455
commit 6240345fd5
5 changed files with 479 additions and 566 deletions

File diff suppressed because it is too large Load Diff

View File

@ -43,8 +43,7 @@
#include "TimerA2.h" #include "TimerA2.h"
namespace aria2 namespace aria2 {
{
class FileEntry; class FileEntry;
class RequestGroup; class RequestGroup;
@ -63,8 +62,7 @@ class AsyncNameResolver;
class AsyncNameResolverMan; class AsyncNameResolverMan;
#endif // ENABLE_ASYNC_DNS #endif // ENABLE_ASYNC_DNS
class AbstractCommand : public Command class AbstractCommand : public Command {
{
private: private:
std::shared_ptr<Request> req_; std::shared_ptr<Request> req_;
std::shared_ptr<FileEntry> fileEntry_; std::shared_ptr<FileEntry> fileEntry_;
@ -77,10 +75,10 @@ private:
std::unique_ptr<AsyncNameResolverMan> asyncNameResolverMan_; std::unique_ptr<AsyncNameResolverMan> asyncNameResolverMan_;
#endif // ENABLE_ASYNC_DNS #endif // ENABLE_ASYNC_DNS
RequestGroup *requestGroup_; RequestGroup* requestGroup_;
DownloadEngine *e_; DownloadEngine* e_;
std::vector<std::shared_ptr<Segment>> segments_; std::vector<std::shared_ptr<Segment> > segments_;
Timer checkPoint_; Timer checkPoint_;
Timer serverStatTimer_; Timer serverStatTimer_;
@ -92,10 +90,7 @@ private:
bool incNumConnection_; bool incNumConnection_;
int32_t calculateMinSplitSize() const; int32_t calculateMinSplitSize() const;
void useFasterRequest(const std::shared_ptr<Request>& fasterRequest);
void useFasterRequest(const std::shared_ptr<Request> &fasterRequest);
bool shouldCheck() const;
public: public:
RequestGroup* getRequestGroup() const RequestGroup* getRequestGroup() const
@ -108,7 +103,7 @@ public:
return req_; return req_;
} }
void setRequest(const std::shared_ptr<Request> &request); void setRequest(const std::shared_ptr<Request>& request);
// Resets request_. This method is more efficient than // Resets request_. This method is more efficient than
// setRequest(std::shared_ptr<Request>()); // setRequest(std::shared_ptr<Request>());
@ -119,9 +114,9 @@ public:
return fileEntry_; return fileEntry_;
} }
void setFileEntry(const std::shared_ptr<FileEntry> &fileEntry); void setFileEntry(const std::shared_ptr<FileEntry>& fileEntry);
DownloadEngine *getDownloadEngine() const DownloadEngine* getDownloadEngine() const
{ {
return e_; return e_;
} }
@ -131,12 +126,12 @@ public:
return socket_; return socket_;
} }
std::shared_ptr<SocketCore> &getSocket() std::shared_ptr<SocketCore>& getSocket()
{ {
return socket_; return socket_;
} }
void setSocket(const std::shared_ptr<SocketCore> &s); void setSocket(const std::shared_ptr<SocketCore>& s);
void createSocket(); void createSocket();
@ -145,7 +140,7 @@ public:
return socketRecvBuffer_; return socketRecvBuffer_;
} }
const std::vector<std::shared_ptr<Segment>>& getSegments() const const std::vector<std::shared_ptr<Segment> >& getSegments() const
{ {
return segments_; return segments_;
} }
@ -155,46 +150,37 @@ public:
// return empty string. In this case, call this function with same // return empty string. In this case, call this function with same
// arguments until resolved address is returned. Exception is // arguments until resolved address is returned. Exception is
// thrown on error. port is used for retrieving cached addresses. // thrown on error. port is used for retrieving cached addresses.
std::string resolveHostname(std::vector<std::string> &addrs, std::string resolveHostname
const std::string &hostname, (std::vector<std::string>& addrs, const std::string& hostname, uint16_t port);
uint16_t port);
void tryReserved(); void tryReserved();
void setReadCheckSocket(const std::shared_ptr<SocketCore> &socket); void setReadCheckSocket(const std::shared_ptr<SocketCore>& socket);
void setWriteCheckSocket(const std::shared_ptr<SocketCore>& socket);
void setWriteCheckSocket(const std::shared_ptr<SocketCore> &socket);
void disableReadCheckSocket(); void disableReadCheckSocket();
void disableWriteCheckSocket(); void disableWriteCheckSocket();
/** /**
* If pred == true, calls setReadCheckSocket(socket). Otherwise, calls * If pred == true, calls setReadCheckSocket(socket). Otherwise, calls
* disableReadCheckSocket(). * disableReadCheckSocket().
*/ */
void setReadCheckSocketIf(const std::shared_ptr<SocketCore> &socket, void setReadCheckSocketIf(const std::shared_ptr<SocketCore>& socket, bool pred);
bool pred);
/** /**
* If pred == true, calls setWriteCheckSocket(socket). Otherwise, calls * If pred == true, calls setWriteCheckSocket(socket). Otherwise, calls
* disableWriteCheckSocket(). * disableWriteCheckSocket().
*/ */
void setWriteCheckSocketIf(const std::shared_ptr<SocketCore> &socket, void setWriteCheckSocketIf(const std::shared_ptr<SocketCore>& socket, bool pred);
bool pred);
// Swaps socket_ with socket. This disables current read and write // Swaps socket_ with socket. This disables current read and write
// check. // check.
void swapSocket(std::shared_ptr<SocketCore> &socket); void swapSocket(std::shared_ptr<SocketCore>& socket);
time_t getTimeout() const time_t getTimeout() const
{ {
return timeout_; return timeout_;
} }
void setTimeout(time_t timeout) void setTimeout(time_t timeout) { timeout_ = timeout; }
{
timeout_ = timeout;
}
void prepareForNextAction(std::unique_ptr<CheckIntegrityEntry> checkEntry); void prepareForNextAction(std::unique_ptr<CheckIntegrityEntry> checkEntry);
@ -203,10 +189,11 @@ public:
// InitiateConnectionCommandFactory and it is pushed to // InitiateConnectionCommandFactory and it is pushed to
// DownloadEngine and returns false. If no addresses left, DlRetryEx // DownloadEngine and returns false. If no addresses left, DlRetryEx
// exception is thrown. // exception is thrown.
bool checkIfConnectionEstablished(const std::shared_ptr<SocketCore> &socket, bool checkIfConnectionEstablished
const std::string &connectedHostname, (const std::shared_ptr<SocketCore>& socket,
const std::string &connectedAddr, const std::string& connectedHostname,
uint16_t connectedPort); const std::string& connectedAddr,
uint16_t connectedPort);
/* /*
* Returns true if proxy for the procol indicated by Request::getProtocol() * Returns true if proxy for the procol indicated by Request::getProtocol()
@ -222,7 +209,7 @@ public:
// Returns proxy method for given protocol. Either V_GET or V_TUNNEL // Returns proxy method for given protocol. Either V_GET or V_TUNNEL
// is returned. For HTTPS, always returns V_TUNNEL. // is returned. For HTTPS, always returns V_TUNNEL.
const std::string& resolveProxyMethod(const std::string &protocol) const; const std::string& resolveProxyMethod(const std::string& protocol) const;
const std::shared_ptr<Option>& getOption() const; const std::shared_ptr<Option>& getOption() const;
@ -230,7 +217,7 @@ public:
const std::shared_ptr<SegmentMan>& getSegmentMan() const; const std::shared_ptr<SegmentMan>& getSegmentMan() const;
const std::shared_ptr<PieceStorage>& getPieceStorage() const; const std::shared_ptr<PieceStorage>& getPieceStorage() const;
Timer &getCheckPoint() Timer& getCheckPoint()
{ {
return checkPoint_; return checkPoint_;
} }
@ -238,40 +225,33 @@ public:
void checkSocketRecvBuffer(); void checkSocketRecvBuffer();
void addCommandSelf(); void addCommandSelf();
protected: protected:
virtual bool prepareForRetry(time_t wait); virtual bool prepareForRetry(time_t wait);
virtual void onAbort(); virtual void onAbort();
virtual bool executeInternal() = 0; virtual bool executeInternal() = 0;
// Returns true if the derived class wants to execute // Returns true if the derived class wants to execute
// executeInternal() unconditionally // executeInternal() unconditionally
virtual bool noCheck() const virtual bool noCheck()
{ {
return false; return false;
} }
public: public:
AbstractCommand(cuid_t cuid, AbstractCommand(cuid_t cuid, const std::shared_ptr<Request>& req,
const std::shared_ptr<Request> &req, const std::shared_ptr<FileEntry>& fileEntry,
const std::shared_ptr<FileEntry> &fileEntry, RequestGroup* requestGroup, DownloadEngine* e,
RequestGroup *requestGroup, const std::shared_ptr<SocketCore>& s = nullptr,
DownloadEngine *e, const std::shared_ptr<SocketRecvBuffer>& socketRecvBuffer = nullptr,
const std::shared_ptr<SocketCore> &s = nullptr,
const std::shared_ptr<SocketRecvBuffer> &socketRecvBuffer =
nullptr,
bool incNumConnection = true); bool incNumConnection = true);
virtual ~AbstractCommand(); virtual ~AbstractCommand();
virtual bool execute() CXX11_OVERRIDE; virtual bool execute() CXX11_OVERRIDE;
}; };
// Returns proxy URI for given protocol. If no proxy URI is defined, // Returns proxy URI for given protocol. If no proxy URI is defined,
// then returns an empty string. // then returns an empty string.
std::string getProxyUri(const std::string &protocol, const Option *option); std::string getProxyUri
(const std::string& protocol, const Option* option);
} // namespace aria2 } // namespace aria2

View File

@ -115,7 +115,7 @@ bool ConnectCommand::executeInternal()
return true; return true;
} }
bool ConnectCommand::noCheck() const bool ConnectCommand::noCheck()
{ {
return backupConnectionInfo_ && !backupConnectionInfo_->ipaddr.empty(); return backupConnectionInfo_ && !backupConnectionInfo_->ipaddr.empty();
} }

View File

@ -58,7 +58,7 @@ public:
const std::shared_ptr<Request>& getProxyRequest() const; const std::shared_ptr<Request>& getProxyRequest() const;
protected: protected:
virtual bool executeInternal() CXX11_OVERRIDE; virtual bool executeInternal() CXX11_OVERRIDE;
virtual bool noCheck() const CXX11_OVERRIDE; virtual bool noCheck() CXX11_OVERRIDE;
private: private:
std::shared_ptr<Request> proxyRequest_; std::shared_ptr<Request> proxyRequest_;
std::shared_ptr<BackupConnectInfo> backupConnectionInfo_; std::shared_ptr<BackupConnectInfo> backupConnectionInfo_;

View File

@ -241,11 +241,6 @@ public:
int64_t getCompletedLength() const; int64_t getCompletedLength() const;
inline int64_t getPendingLength() const
{
return getTotalLength() - getCompletedLength();
}
/** /**
* Compares expected filename with specified actualFilename. * Compares expected filename with specified actualFilename.
* The expected filename refers to FileEntry::getBasename() of the first * The expected filename refers to FileEntry::getBasename() of the first