diff options
| author | Nils Maier <maierman@web.de> | 2014-05-29 18:25:00 +0200 |
|---|---|---|
| committer | Nils Maier <maierman@web.de> | 2014-05-29 18:39:53 +0200 |
| commit | 8cada4976504da98a45fd68bcc461cab92eff9a0 (patch) | |
| tree | e9e770e790b594db4cc2f1fbb4adc8ed544ee580 /src/AbstractCommand.h | |
| parent | e57d330111ddc338323ce6ad462724f373b50478 (diff) | |
Cleanup AbstractCommand take 2
Decided to keep the 'if(' -> 'if (' stuff, as I formatted the whole file
and so it is internally consistent within the file. Also, too much
hassle.
Diffstat (limited to 'src/AbstractCommand.h')
| -rw-r--r-- | src/AbstractCommand.h | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/src/AbstractCommand.h b/src/AbstractCommand.h index 7f6c9429..5cca26a5 100644 --- a/src/AbstractCommand.h +++ b/src/AbstractCommand.h @@ -62,7 +62,8 @@ class AsyncNameResolver; class AsyncNameResolverMan; #endif // ENABLE_ASYNC_DNS -class AbstractCommand : public Command { +class AbstractCommand : public Command +{ private: std::shared_ptr<Request> req_; std::shared_ptr<FileEntry> fileEntry_; @@ -78,7 +79,7 @@ private: RequestGroup* requestGroup_; DownloadEngine* e_; - std::vector<std::shared_ptr<Segment> > segments_; + std::vector<std::shared_ptr<Segment>> segments_; Timer checkPoint_; Timer serverStatTimer_; @@ -90,8 +91,11 @@ private: bool incNumConnection_; int32_t calculateMinSplitSize() const; + void useFasterRequest(const std::shared_ptr<Request>& fasterRequest); + bool shouldProcess() const; + public: RequestGroup* getRequestGroup() const { @@ -140,7 +144,7 @@ public: return socketRecvBuffer_; } - const std::vector<std::shared_ptr<Segment> >& getSegments() const + const std::vector<std::shared_ptr<Segment>>& getSegments() const { return segments_; } @@ -150,26 +154,32 @@ public: // return empty string. In this case, call this function with same // arguments until resolved address is returned. Exception is // thrown on error. port is used for retrieving cached addresses. - std::string resolveHostname - (std::vector<std::string>& addrs, const std::string& hostname, uint16_t port); + std::string resolveHostname(std::vector<std::string>& addrs, + const std::string& hostname, + uint16_t port); void tryReserved(); void setReadCheckSocket(const std::shared_ptr<SocketCore>& socket); + void setWriteCheckSocket(const std::shared_ptr<SocketCore>& socket); + void disableReadCheckSocket(); + void disableWriteCheckSocket(); /** * If pred == true, calls setReadCheckSocket(socket). Otherwise, calls * disableReadCheckSocket(). */ - void setReadCheckSocketIf(const std::shared_ptr<SocketCore>& socket, bool pred); + void setReadCheckSocketIf(const std::shared_ptr<SocketCore>& socket, + bool pred); /** * If pred == true, calls setWriteCheckSocket(socket). Otherwise, calls * disableWriteCheckSocket(). */ - void setWriteCheckSocketIf(const std::shared_ptr<SocketCore>& socket, bool pred); + void setWriteCheckSocketIf(const std::shared_ptr<SocketCore>& socket, + bool pred); // Swaps socket_ with socket. This disables current read and write // check. @@ -180,7 +190,10 @@ public: return timeout_; } - void setTimeout(time_t timeout) { timeout_ = timeout; } + void setTimeout(time_t timeout) + { + timeout_ = timeout; + } void prepareForNextAction(std::unique_ptr<CheckIntegrityEntry> checkEntry); @@ -189,11 +202,10 @@ public: // InitiateConnectionCommandFactory and it is pushed to // DownloadEngine and returns false. If no addresses left, DlRetryEx // exception is thrown. - bool checkIfConnectionEstablished - (const std::shared_ptr<SocketCore>& socket, - const std::string& connectedHostname, - const std::string& connectedAddr, - uint16_t connectedPort); + bool checkIfConnectionEstablished(const std::shared_ptr<SocketCore>& socket, + const std::string& connectedHostname, + const std::string& connectedAddr, + uint16_t connectedPort); /* * Returns true if proxy for the procol indicated by Request::getProtocol() @@ -225,33 +237,40 @@ public: void checkSocketRecvBuffer(); void addCommandSelf(); + protected: virtual bool prepareForRetry(time_t wait); + virtual void onAbort(); + virtual bool executeInternal() = 0; + // Returns true if the derived class wants to execute // executeInternal() unconditionally - virtual bool noCheck() + virtual bool noCheck() const { return false; } public: - AbstractCommand(cuid_t cuid, const std::shared_ptr<Request>& req, + AbstractCommand(cuid_t cuid, + const std::shared_ptr<Request>& req, const std::shared_ptr<FileEntry>& fileEntry, - RequestGroup* requestGroup, DownloadEngine* e, + RequestGroup* requestGroup, + DownloadEngine* e, const std::shared_ptr<SocketCore>& s = nullptr, - const std::shared_ptr<SocketRecvBuffer>& socketRecvBuffer = nullptr, + const std::shared_ptr<SocketRecvBuffer>& socketRecvBuffer = + nullptr, bool incNumConnection = true); virtual ~AbstractCommand(); + virtual bool execute() CXX11_OVERRIDE; }; // Returns proxy URI for given protocol. If no proxy URI is defined, // 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 |
