Procházet zdrojové kódy

2010-06-09 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Made protected member variables of Command private. Added accessor
	funcs.
Tatsuhiro Tsujikawa před 15 roky
rodič
revize
9afc36152a
48 změnil soubory, kde provedl 541 přidání a 436 odebrání
  1. 5 0
      ChangeLog
  2. 115 99
      src/AbstractCommand.cc
  3. 3 3
      src/ActivePeerConnectionCommand.cc
  4. 3 3
      src/BtStopDownloadCommand.cc
  5. 12 8
      src/CheckIntegrityCommand.cc
  6. 4 3
      src/CheckIntegrityDispatcherCommand.cc
  7. 6 6
      src/Command.cc
  8. 34 9
      src/Command.h
  9. 7 6
      src/CreateRequestCommand.cc
  10. 8 7
      src/DHTAutoSaveCommand.cc
  11. 24 18
      src/DHTEntryPointNameResolveCommand.cc
  12. 4 4
      src/DHTGetPeersCommand.cc
  13. 1 1
      src/DHTInteractionCommand.cc
  14. 1 1
      src/DHTPeerAnnounceCommand.cc
  15. 1 1
      src/DHTTokenUpdateCommand.cc
  16. 38 28
      src/DownloadCommand.cc
  17. 10 7
      src/FileAllocationCommand.cc
  18. 3 2
      src/FileAllocationDispatcherCommand.cc
  19. 1 1
      src/FillRequestGroupCommand.cc
  20. 5 2
      src/FtpDownloadCommand.cc
  21. 1 1
      src/FtpFinishDownloadCommand.cc
  22. 14 14
      src/FtpInitiateConnectionCommand.cc
  23. 51 43
      src/FtpNegotiationCommand.cc
  24. 1 1
      src/FtpTunnelRequestCommand.cc
  25. 1 1
      src/FtpTunnelResponseCommand.cc
  26. 1 1
      src/HttpDownloadCommand.cc
  27. 14 13
      src/HttpInitiateConnectionCommand.cc
  28. 12 10
      src/HttpListenCommand.cc
  29. 1 1
      src/HttpProxyRequestCommand.cc
  30. 1 1
      src/HttpProxyResponseCommand.cc
  31. 1 1
      src/HttpRequestCommand.cc
  32. 20 15
      src/HttpResponseCommand.cc
  33. 6 5
      src/HttpServerBodyCommand.cc
  34. 10 10
      src/HttpServerCommand.cc
  35. 15 12
      src/HttpServerResponseCommand.cc
  36. 2 2
      src/HttpSkipResponseCommand.cc
  37. 5 5
      src/InitiateConnectionCommand.cc
  38. 13 11
      src/InitiatorMSEHandshakeCommand.cc
  39. 5 5
      src/LpdDispatchMessageCommand.cc
  40. 14 13
      src/LpdReceiveMessageCommand.cc
  41. 18 16
      src/PeerAbstractCommand.cc
  42. 7 6
      src/PeerInitiateConnectionCommand.cc
  43. 10 9
      src/PeerListenCommand.cc
  44. 6 6
      src/PeerReceiveHandshakeCommand.cc
  45. 7 5
      src/ReceiverMSEHandshakeCommand.cc
  46. 1 1
      src/SeedCheckCommand.cc
  47. 2 2
      src/TimedHaltCommand.cc
  48. 17 17
      src/TrackerWatcherCommand.cc

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2010-06-09  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Made protected member variables of Command private. Added accessor
+	funcs.
+
 2010-06-08  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Made public member variables of DownloadEngine private. Added

+ 115 - 99
src/AbstractCommand.cc

@@ -101,20 +101,23 @@ AbstractCommand::~AbstractCommand() {
 }
 
 bool AbstractCommand::execute() {
-  if(logger->debug()) {
-    logger->debug("CUID#%s - socket: read:%d, write:%d, hup:%d, err:%d",
-                  util::itos(cuid).c_str(), _readEvent, _writeEvent, _hupEvent,
-                  _errorEvent);
+  if(getLogger()->debug()) {
+    getLogger()->debug("CUID#%s - socket: read:%d, write:%d, hup:%d, err:%d",
+                       util::itos(getCuid()).c_str(),
+                       readEventEnabled(),
+                       writeEventEnabled(),
+                       hupEventEnabled(),
+                       errorEventEnabled());
   }
   try {
     if(_requestGroup->downloadFinished() || _requestGroup->isHaltRequested()) {
       return true;
     }
     if(!req.isNull() && req->removalRequested()) {
-      if(logger->debug()) {
-        logger->debug
+      if(getLogger()->debug()) {
+        getLogger()->debug
           ("CUID#%s - Discard original URI=%s because it is requested.",
-           util::itos(cuid).c_str(), req->getUri().c_str());
+           util::itos(getCuid()).c_str(), req->getUri().c_str());
       }
       return prepareForRetry(0);
     }
@@ -124,39 +127,42 @@ bool AbstractCommand::execute() {
        !_requestGroup->getPieceStorage()->hasMissingUnusedPiece()) {
       SharedHandle<Request> fasterRequest = _fileEntry->findFasterRequest(req);
       if(!fasterRequest.isNull()) {
-        if(logger->info()) {
-          logger->info("CUID#%s - Use faster Request hostname=%s, port=%u",
-                       util::itos(cuid).c_str(),
-                       fasterRequest->getHost().c_str(),
-                       fasterRequest->getPort());
+        if(getLogger()->info()) {
+          getLogger()->info("CUID#%s - Use faster Request hostname=%s, port=%u",
+                            util::itos(getCuid()).c_str(),
+                            fasterRequest->getHost().c_str(),
+                            fasterRequest->getPort());
         }
         // Cancel current Request object and use faster one.
         _fileEntry->removeRequest(req);
         Command* command =
           InitiateConnectionCommandFactory::createInitiateConnectionCommand
-          (cuid, fasterRequest, _fileEntry, _requestGroup, e);
+          (getCuid(), fasterRequest, _fileEntry, _requestGroup, e);
         e->setNoWait(true);
         e->addCommand(command);
         return true;
       }
     }
-    if((checkSocketIsReadable && _readEvent) ||
-       (checkSocketIsWritable && _writeEvent) ||
-       _hupEvent ||
+    if((checkSocketIsReadable && readEventEnabled()) ||
+       (checkSocketIsWritable && writeEventEnabled()) ||
+       hupEventEnabled() ||
 #ifdef ENABLE_ASYNC_DNS
        (nameResolverCheck && nameResolveFinished()) ||
 #endif // ENABLE_ASYNC_DNS
-       (!checkSocketIsReadable && !checkSocketIsWritable && !nameResolverCheck)) {
+       (!checkSocketIsReadable && !checkSocketIsWritable &&
+        !nameResolverCheck)) {
       checkPoint = global::wallclock;
       if(!_requestGroup->getPieceStorage().isNull()) {
         _segments.clear();
-        _requestGroup->getSegmentMan()->getInFlightSegment(_segments, cuid);
+        _requestGroup->getSegmentMan()->getInFlightSegment
+          (_segments, getCuid());
         if(!req.isNull() && _segments.empty()) {
           // This command previously has assigned segments, but it is
           // canceled. So discard current request chain.
-          if(logger->debug()) {
-            logger->debug("CUID#%s - It seems previously assigned segments are"
-                          " canceled. Restart.", util::itos(cuid).c_str());
+          if(getLogger()->debug()) {
+            getLogger()->debug("CUID#%s - It seems previously assigned segments"
+                               " are canceled. Restart.",
+                               util::itos(getCuid()).c_str());
           }
           return prepareForRetry(0);
         }
@@ -164,21 +170,22 @@ bool AbstractCommand::execute() {
            _requestGroup->getDownloadContext()->getFileEntries().size() == 1) {
           if(_segments.empty()) {
             SharedHandle<Segment> segment =
-              _requestGroup->getSegmentMan()->getSegment(cuid);
+              _requestGroup->getSegmentMan()->getSegment(getCuid());
             if(!segment.isNull()) {
               _segments.push_back(segment);
             }
           }
           if(_segments.empty()) {
             // TODO socket could be pooled here if pipelining is enabled...
-            if(logger->info()) {
-              logger->info(MSG_NO_SEGMENT_AVAILABLE, util::itos(cuid).c_str());
+            if(getLogger()->info()) {
+              getLogger()->info(MSG_NO_SEGMENT_AVAILABLE,
+                                util::itos(getCuid()).c_str());
             }
             // When all segments are ignored in SegmentMan, there are
             // no URIs available, so don't retry.
             if(_requestGroup->getSegmentMan()->allSegmentsIgnored()) {
-              if(logger->debug()) {
-                logger->debug("All segments are ignored.");
+              if(getLogger()->debug()) {
+                getLogger()->debug("All segments are ignored.");
               }
               return true;
             } else {
@@ -189,7 +196,7 @@ bool AbstractCommand::execute() {
           size_t maxSegments = req->getMaxPipelinedRequest();
           if(_segments.size() < maxSegments) {
             _requestGroup->getSegmentMan()->getSegment
-              (_segments, cuid, _fileEntry, maxSegments);
+              (_segments, getCuid(), _fileEntry, maxSegments);
           }
           if(_segments.empty()) {
             return prepareForRetry(0);
@@ -197,7 +204,7 @@ bool AbstractCommand::execute() {
         }
       }
       return executeInternal();
-    } else if(_errorEvent) {
+    } else if(errorEventEnabled()) {
       throw DL_RETRY_EX
         (StringFormat(MSG_NETWORK_PROBLEM,
                       socket->getSocketError().c_str()).str());
@@ -217,14 +224,15 @@ bool AbstractCommand::execute() {
     }
   } catch(DlAbortEx& err) {
     if(req.isNull()) {
-      if(logger->debug()) {
-        logger->debug(EX_EXCEPTION_CAUGHT, err);
+      if(getLogger()->debug()) {
+        getLogger()->debug(EX_EXCEPTION_CAUGHT, err);
       }
     } else {
-      logger->error(MSG_DOWNLOAD_ABORTED,
-                    DL_ABORT_EX2(StringFormat
-                                 ("URI=%s", req->getCurrentUri().c_str()).str(),err),
-                    util::itos(cuid).c_str(), req->getUri().c_str());
+      getLogger()->error
+        (MSG_DOWNLOAD_ABORTED,
+         DL_ABORT_EX2(StringFormat
+                      ("URI=%s", req->getCurrentUri().c_str()).str(),err),
+         util::itos(getCuid()).c_str(), req->getUri().c_str());
       _fileEntry->addURIResult(req->getUri(), err.getCode());
       _requestGroup->setLastUriResult(req->getUri(), err.getCode());
       if(err.getCode() == downloadresultcode::CANNOT_RESUME) {
@@ -236,23 +244,26 @@ bool AbstractCommand::execute() {
     return true;
   } catch(DlRetryEx& err) {
     assert(!req.isNull());
-    if(logger->info()) {
-      logger->info(MSG_RESTARTING_DOWNLOAD,
-                   DL_RETRY_EX2(StringFormat
-                                ("URI=%s", req->getCurrentUri().c_str()).str(),
-                                err),
-                   util::itos(cuid).c_str(), req->getUri().c_str());
+    if(getLogger()->info()) {
+      getLogger()->info
+        (MSG_RESTARTING_DOWNLOAD,
+         DL_RETRY_EX2(StringFormat
+                      ("URI=%s", req->getCurrentUri().c_str()).str(),
+                      err),
+         util::itos(getCuid()).c_str(), req->getUri().c_str());
     }
     req->addTryCount();
     req->resetRedirectCount();
     const unsigned int maxTries = getOption()->getAsInt(PREF_MAX_TRIES);
     bool isAbort = maxTries != 0 && req->getTryCount() >= maxTries;
     if(isAbort) {
-      if(logger->info()) {
-        logger->info(MSG_MAX_TRY, util::itos(cuid).c_str(), req->getTryCount());
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_MAX_TRY,
+                          util::itos(getCuid()).c_str(), req->getTryCount());
       }
-      logger->error(MSG_DOWNLOAD_ABORTED, err, util::itos(cuid).c_str(),
-                    req->getUri().c_str());
+      getLogger()->error(MSG_DOWNLOAD_ABORTED, err,
+                         util::itos(getCuid()).c_str(),
+                         req->getUri().c_str());
       _fileEntry->addURIResult(req->getUri(), err.getCode());
       _requestGroup->setLastUriResult(req->getUri(), err.getCode());
       if(err.getCode() == downloadresultcode::CANNOT_RESUME) {
@@ -265,7 +276,7 @@ bool AbstractCommand::execute() {
       return prepareForRetry(0);
     }
   } catch(DownloadFailureException& err) {
-    logger->error(EX_EXCEPTION_CAUGHT, err);
+    getLogger()->error(EX_EXCEPTION_CAUGHT, err);
     if(!req.isNull()) {
       _fileEntry->addURIResult(req->getUri(), err.getCode());
       _requestGroup->setLastUriResult(req->getUri(), err.getCode());
@@ -283,18 +294,18 @@ void AbstractCommand::tryReserved() {
     // and there are no URI left. Because file length is unknown, we
     // can assume that there are no in-flight request object.
     if(entry->getLength() == 0 && entry->getRemainingUris().empty()) {
-      if(logger->debug()) {
-        logger->debug("CUID#%s - Not trying next request."
-                      " No reserved/pooled request is remaining and"
-                      " total length is still unknown.",
-                      util::itos(cuid).c_str());
+      if(getLogger()->debug()) {
+        getLogger()->debug("CUID#%s - Not trying next request."
+                           " No reserved/pooled request is remaining and"
+                           " total length is still unknown.",
+                           util::itos(getCuid()).c_str());
       }
       return;
     }
   }
-  if(logger->debug()) {
-    logger->debug("CUID#%s - Trying reserved/pooled request.",
-                  util::itos(cuid).c_str());
+  if(getLogger()->debug()) {
+    getLogger()->debug("CUID#%s - Trying reserved/pooled request.",
+                       util::itos(getCuid()).c_str());
   }
   std::vector<Command*> commands;
   _requestGroup->createNextCommand(commands, e, 1);
@@ -304,25 +315,25 @@ void AbstractCommand::tryReserved() {
 
 bool AbstractCommand::prepareForRetry(time_t wait) {
   if(!_requestGroup->getPieceStorage().isNull()) {
-    _requestGroup->getSegmentMan()->cancelSegment(cuid);
+    _requestGroup->getSegmentMan()->cancelSegment(getCuid());
   }
   if(!req.isNull()) {
     _fileEntry->poolRequest(req);
-    if(logger->debug()) {
-      logger->debug("CUID#%s - Pooling request URI=%s",
-                    util::itos(cuid).c_str(), req->getUri().c_str());
+    if(getLogger()->debug()) {
+      getLogger()->debug("CUID#%s - Pooling request URI=%s",
+                         util::itos(getCuid()).c_str(), req->getUri().c_str());
     }
     if(!_requestGroup->getSegmentMan().isNull()) {
       _requestGroup->getSegmentMan()->recognizeSegmentFor(_fileEntry);
     }
   }
 
-  Command* command = new CreateRequestCommand(cuid, _requestGroup, e);
+  Command* command = new CreateRequestCommand(getCuid(), _requestGroup, e);
   if(wait == 0) {
     e->setNoWait(true);
     e->addCommand(command);
   } else {
-    SleepCommand* scom = new SleepCommand(cuid, e, _requestGroup,
+    SleepCommand* scom = new SleepCommand(getCuid(), e, _requestGroup,
                                           command, wait);
     e->addCommand(scom);
   }
@@ -332,17 +343,18 @@ bool AbstractCommand::prepareForRetry(time_t wait) {
 void AbstractCommand::onAbort() {
   if(!req.isNull()) {
     // TODO This might be a problem if the failure is caused by proxy.
-    e->getRequestGroupMan()->getOrCreateServerStat(req->getHost(),
-                                                   req->getProtocol())->setError();
+    e->getRequestGroupMan()->getOrCreateServerStat
+      (req->getHost(), req->getProtocol())->setError();
     _fileEntry->removeIdenticalURI(req->getUri());
     _fileEntry->removeRequest(req);
   }
-  if(logger->debug()) {
-    logger->debug("CUID#%s - Aborting download", util::itos(cuid).c_str());
+  if(getLogger()->debug()) {
+    getLogger()->debug("CUID#%s - Aborting download",
+                       util::itos(getCuid()).c_str());
   }
   if(!_requestGroup->getPieceStorage().isNull()) {
     SharedHandle<SegmentMan> segmentMan = _requestGroup->getSegmentMan();
-    segmentMan->cancelSegment(cuid);
+    segmentMan->cancelSegment(getCuid());
     // Don't do following process if BitTorrent is involved or files
     // in DownloadContext is more than 1. The latter condition is
     // limitation of current implementation.
@@ -357,12 +369,13 @@ void AbstractCommand::onAbort() {
         // Local file exists, but given servers(or at least contacted
         // ones) doesn't support resume. Let's restart download from
         // scratch.
-        logger->notice("CUID#%s - Failed to resume download."
-                       " Download from scratch.",
-                       util::itos(cuid).c_str());
-        if(logger->debug()) {
-          logger->debug("CUID#%s - Gathering URIs that has CANNOT_RESUME error",
-                        util::itos(cuid).c_str());
+        getLogger()->notice("CUID#%s - Failed to resume download."
+                            " Download from scratch.",
+                            util::itos(getCuid()).c_str());
+        if(getLogger()->debug()) {
+          getLogger()->debug
+            ("CUID#%s - Gathering URIs that has CANNOT_RESUME error",
+             util::itos(getCuid()).c_str());
         }
         // Set PREF_ALWAYS_RESUME to V_TRUE to avoid repeating this
         // process.
@@ -377,10 +390,10 @@ void AbstractCommand::onAbort() {
           uris.reserve(res.size());
           std::transform(res.begin(), res.end(), std::back_inserter(uris),
                          std::mem_fun_ref(&URIResult::getURI));
-          if(logger->debug()) {
-            logger->debug("CUID#%s - %lu URIs found.",
-                          util::itos(cuid).c_str(),
-                          static_cast<unsigned long int>(uris.size()));
+          if(getLogger()->debug()) {
+            getLogger()->debug("CUID#%s - %lu URIs found.",
+                               util::itos(getCuid()).c_str(),
+                               static_cast<unsigned long int>(uris.size()));
           }
           _fileEntry->addUris(uris.begin(), uris.end());
           segmentMan->recognizeSegmentFor(_fileEntry);
@@ -571,13 +584,14 @@ SharedHandle<Request> AbstractCommand::createProxyRequest() const
   if(!proxy.empty()) {
     proxyRequest.reset(new Request());
     if(proxyRequest->setUri(proxy)) {
-      if(logger->debug()) {
-        logger->debug("CUID#%s - Using proxy", util::itos(cuid).c_str());
+      if(getLogger()->debug()) {
+        getLogger()->debug("CUID#%s - Using proxy",
+                           util::itos(getCuid()).c_str());
       }
     } else {
-      if(logger->debug()) {
-        logger->debug("CUID#%s - Failed to parse proxy string",
-                      util::itos(cuid).c_str());
+      if(getLogger()->debug()) {
+        getLogger()->debug("CUID#%s - Failed to parse proxy string",
+                           util::itos(getCuid()).c_str());
       }
       proxyRequest.reset();
     }
@@ -595,9 +609,9 @@ bool AbstractCommand::isAsyncNameResolverInitialized() const
 void AbstractCommand::initAsyncNameResolver(const std::string& hostname)
 {
   _asyncNameResolver.reset(new AsyncNameResolver());
-  if(logger->info()) {
-    logger->info(MSG_RESOLVING_HOSTNAME,
-                 util::itos(cuid).c_str(), hostname.c_str());
+  if(getLogger()->info()) {
+    getLogger()->info(MSG_RESOLVING_HOSTNAME,
+                      util::itos(getCuid()).c_str(), hostname.c_str());
   }
   _asyncNameResolver->resolve(hostname);
   setNameResolverCheck(_asyncNameResolver);
@@ -615,10 +629,11 @@ bool AbstractCommand::asyncResolveHostname()
       e->getRequestGroupMan()->getOrCreateServerStat
         (req->getHost(), req->getProtocol())->setError();
     }
-    throw DL_ABORT_EX(StringFormat(MSG_NAME_RESOLUTION_FAILED,
-                                   util::itos(cuid).c_str(),
-                                   _asyncNameResolver->getHostname().c_str(),
-                                   _asyncNameResolver->getError().c_str()).str());
+    throw DL_ABORT_EX
+      (StringFormat(MSG_NAME_RESOLUTION_FAILED,
+                    util::itos(getCuid()).c_str(),
+                    _asyncNameResolver->getHostname().c_str(),
+                    _asyncNameResolver->getError().c_str()).str());
   default:
     return false;
   }
@@ -678,10 +693,11 @@ std::string AbstractCommand::resolveHostname
         }
         res.resolve(addrs, hostname);
       }
-    if(logger->info()) {
-      logger->info(MSG_NAME_RESOLUTION_COMPLETE, util::itos(cuid).c_str(),
-                   hostname.c_str(),
-                   strjoin(addrs.begin(), addrs.end(), ", ").c_str());
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_NAME_RESOLUTION_COMPLETE,
+                        util::itos(getCuid()).c_str(),
+                        hostname.c_str(),
+                        strjoin(addrs.begin(), addrs.end(), ", ").c_str());
     }
     for(std::vector<std::string>::const_iterator i = addrs.begin(),
           eoi = addrs.end(); i != eoi; ++i) {
@@ -690,10 +706,10 @@ std::string AbstractCommand::resolveHostname
     ipaddr = e->findCachedIPAddress(hostname, port);
   } else {
     ipaddr = addrs.front();
-    if(logger->info()) {
-      logger->info(MSG_DNS_CACHE_HIT,
-                   util::itos(cuid).c_str(), hostname.c_str(),
-                   strjoin(addrs.begin(), addrs.end(), ", ").c_str());
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_DNS_CACHE_HIT,
+                        util::itos(getCuid()).c_str(), hostname.c_str(),
+                        strjoin(addrs.begin(), addrs.end(), ", ").c_str());
     }
   }
   return ipaddr;
@@ -730,14 +746,14 @@ bool AbstractCommand::checkIfConnectionEstablished
       // See also InitiateConnectionCommand::executeInternal()
       e->markBadIPAddress(connectedHostname, connectedAddr, connectedPort);
       if(!e->findCachedIPAddress(connectedHostname, connectedPort).empty()) {
-        if(logger->info()) {
-          logger->info(MSG_CONNECT_FAILED_AND_RETRY,
-                       util::itos(cuid).c_str(),
-                       connectedAddr.c_str(), connectedPort);
+        if(getLogger()->info()) {
+          getLogger()->info(MSG_CONNECT_FAILED_AND_RETRY,
+                            util::itos(getCuid()).c_str(),
+                            connectedAddr.c_str(), connectedPort);
         }
         Command* command =
           InitiateConnectionCommandFactory::createInitiateConnectionCommand
-          (cuid, req, _fileEntry, _requestGroup, e);
+          (getCuid(), req, _fileEntry, _requestGroup, e);
         e->setNoWait(true);
         e->addCommand(command);
         return false;

+ 3 - 3
src/ActivePeerConnectionCommand.cc

@@ -145,9 +145,9 @@ void ActivePeerConnectionCommand::connectToPeer(const SharedHandle<Peer>& peer)
   command->setPeerStorage(_peerStorage);
   command->setPieceStorage(_pieceStorage);
   e->addCommand(command);
-  if(logger->info()) {
-    logger->info(MSG_CONNECTING_TO_PEER,
-                 util::itos(cuid).c_str(), peer->ipaddr.c_str());
+  if(getLogger()->info()) {
+    getLogger()->info(MSG_CONNECTING_TO_PEER,
+                      util::itos(getCuid()).c_str(), peer->ipaddr.c_str());
   }
 }
 

+ 3 - 3
src/BtStopDownloadCommand.cc

@@ -60,9 +60,9 @@ void BtStopDownloadCommand::preProcess()
     _exit = true;
   }
   if(_checkPoint.difference(global::wallclock) >= _timeout) {
-    logger->notice("GID#%s Stop downloading torrent due to"
-                   " --bt-stop-timeout option.",
-                   util::itos(_requestGroup->getGID()).c_str());
+    getLogger()->notice("GID#%s Stop downloading torrent due to"
+                        " --bt-stop-timeout option.",
+                        util::itos(_requestGroup->getGID()).c_str());
     _requestGroup->setHaltRequested(true);
     _exit = true;
   }

+ 12 - 8
src/CheckIntegrityCommand.cc

@@ -72,8 +72,9 @@ bool CheckIntegrityCommand::executeInternal()
     // needed.
     _requestGroup->enableSaveControlFile();
     if(_requestGroup->downloadFinished()) {
-      logger->notice(MSG_VERIFICATION_SUCCESSFUL,
-                     _requestGroup->getDownloadContext()->getBasePath().c_str());
+      getLogger()->notice
+        (MSG_VERIFICATION_SUCCESSFUL,
+         _requestGroup->getDownloadContext()->getBasePath().c_str());
       std::vector<Command*> commands;
       try {
         _entry->onDownloadFinished(commands, _e);
@@ -83,8 +84,9 @@ bool CheckIntegrityCommand::executeInternal()
       }
       _e->addCommand(commands);
     } else {
-      logger->error(MSG_VERIFICATION_FAILED,
-                    _requestGroup->getDownloadContext()->getBasePath().c_str());
+      getLogger()->error
+        (MSG_VERIFICATION_FAILED,
+         _requestGroup->getDownloadContext()->getBasePath().c_str());
       std::vector<Command*> commands;
       try {
         _entry->onDownloadIncomplete(commands,_e);
@@ -105,10 +107,12 @@ bool CheckIntegrityCommand::executeInternal()
 bool CheckIntegrityCommand::handleException(Exception& e)
 {
   _e->getCheckIntegrityMan()->dropPickedEntry();
-  logger->error(MSG_FILE_VALIDATION_FAILURE, e, util::itos(cuid).c_str());
-  logger->error(MSG_DOWNLOAD_NOT_COMPLETE,
-                util::itos(cuid).c_str(),
-                _requestGroup->getDownloadContext()->getBasePath().c_str());
+  getLogger()->error(MSG_FILE_VALIDATION_FAILURE, e,
+                     util::itos(getCuid()).c_str());
+  getLogger()->error
+    (MSG_DOWNLOAD_NOT_COMPLETE,
+     util::itos(getCuid()).c_str(),
+     _requestGroup->getDownloadContext()->getBasePath().c_str());
   return true;
 }
 

+ 4 - 3
src/CheckIntegrityDispatcherCommand.cc

@@ -57,9 +57,10 @@ Command* CheckIntegrityDispatcherCommand::createCommand
 (const SharedHandle<CheckIntegrityEntry>& entry)
 {
   cuid_t newCUID = _e->newCUID();
-  if(logger->info()) {
-    logger->info("CUID#%s - Dispatching CheckIntegrityCommand CUID#%s.",
-                 util::itos(cuid).c_str(), util::itos(newCUID).c_str());
+  if(getLogger()->info()) {
+    getLogger()->info("CUID#%s - Dispatching CheckIntegrityCommand CUID#%s.",
+                      util::itos(getCuid()).c_str(),
+                      util::itos(newCUID).c_str());
   }
   return new CheckIntegrityCommand
     (newCUID, entry->getRequestGroup(), _e, entry);

+ 6 - 6
src/Command.cc

@@ -41,9 +41,9 @@ namespace aria2 {
 int32_t Command::uuidGen = 0;
 
 Command::Command(cuid_t cuid):uuid(uuidGen++),
-                              status(STATUS_INACTIVE),
-                              cuid(cuid),
-                              logger(LogFactory::getInstance()),
+                              _status(STATUS_INACTIVE),
+                              _cuid(cuid),
+                              _logger(LogFactory::getInstance()),
                               _readEvent(false),
                               _writeEvent(false),
                               _errorEvent(false),
@@ -51,17 +51,17 @@ Command::Command(cuid_t cuid):uuid(uuidGen++),
 
 void Command::transitStatus()
 {
-  switch(status) {
+  switch(_status) {
   case STATUS_REALTIME:
     break;
   default:
-    status = STATUS_INACTIVE;
+    _status = STATUS_INACTIVE;
   }
 }
 
 void Command::setStatus(STATUS status)
 {
-  this->status = status;
+  _status = status;
 }
 
 void Command::readEventReceived()

+ 34 - 9
src/Command.h

@@ -58,15 +58,40 @@ public:
 private:
   CommandUuid uuid;
   static int32_t uuidGen;
-  STATUS status;
-protected:
-  cuid_t cuid;
-  Logger* logger;
+  STATUS _status;
+
+  cuid_t _cuid;
+  Logger* _logger;
 
   bool _readEvent;
   bool _writeEvent;
   bool _errorEvent;
   bool _hupEvent;
+protected:
+  Logger* getLogger() const
+  {
+    return _logger;
+  }
+
+  bool readEventEnabled() const
+  {
+    return _readEvent;
+  }
+
+  bool writeEventEnabled() const
+  {
+    return _writeEvent;
+  }
+
+  bool errorEventEnabled() const
+  {
+    return _errorEvent;
+  }
+
+  bool hupEventEnabled() const
+  {
+    return _hupEvent;
+  }
 public:
   Command(cuid_t cuid);
 
@@ -74,21 +99,21 @@ public:
 
   virtual bool execute() = 0;
 
-  cuid_t getCuid() const { return cuid; }
+  cuid_t getCuid() const { return _cuid; }
 
   const CommandUuid& getUuid() const { return uuid; }
 
-  void setStatusActive() { this->status = STATUS_ACTIVE; }
+  void setStatusActive() { _status = STATUS_ACTIVE; }
 
-  void setStatusInactive() { this->status = STATUS_INACTIVE; }
+  void setStatusInactive() { _status = STATUS_INACTIVE; }
 
-  void setStatusRealtime() { this->status = STATUS_REALTIME; }
+  void setStatusRealtime() { _status = STATUS_REALTIME; }
 
   void setStatus(STATUS status);
 
   bool statusMatch(Command::STATUS statusFilter) const
   {
-    return statusFilter <= status;
+    return statusFilter <= _status;
   }
 
   void transitStatus();

+ 7 - 6
src/CreateRequestCommand.cc

@@ -97,7 +97,7 @@ bool CreateRequestCommand::executeInternal()
 
   Command* command =
     InitiateConnectionCommandFactory::createInitiateConnectionCommand
-    (cuid, req, _fileEntry, _requestGroup, e);
+    (getCuid(), req, _fileEntry, _requestGroup, e);
   e->setNoWait(true);
   e->addCommand(command);
   return true;
@@ -114,13 +114,14 @@ bool CreateRequestCommand::prepareForRetry(time_t wait)
   // CreateRequestCommand is deleted one second later: This is not
   // efficient. For this reason, reuse current CreateRequestCommand.
   if(!_requestGroup->getPieceStorage().isNull()) {
-    _requestGroup->getSegmentMan()->cancelSegment(cuid);
+    _requestGroup->getSegmentMan()->cancelSegment(getCuid());
   }
-  if(logger->debug()) {
-    logger->debug("CUID#%s - Reusing CreateRequestCommand",
-                  util::itos(cuid).c_str());
+  if(getLogger()->debug()) {
+    getLogger()->debug("CUID#%s - Reusing CreateRequestCommand",
+                       util::itos(getCuid()).c_str());
   }
-  SleepCommand* scom = new SleepCommand(cuid, e, _requestGroup, this, wait);
+  SleepCommand* scom = new SleepCommand
+    (getCuid(), e, _requestGroup, this, wait);
   e->addCommand(scom);
   return false;
 }

+ 8 - 7
src/DHTAutoSaveCommand.cc

@@ -82,7 +82,7 @@ void DHTAutoSaveCommand::process()
 void DHTAutoSaveCommand::save()
 {
   std::string dhtFile = _e->getOption()->get(PREF_DHT_FILE_PATH);
-  logger->info("Saving DHT routing table to %s.", dhtFile.c_str());
+  getLogger()->info("Saving DHT routing table to %s.", dhtFile.c_str());
 
   std::string tempFile = dhtFile;
   tempFile += "__temp";
@@ -92,11 +92,12 @@ void DHTAutoSaveCommand::save()
       File dir(f.getDirname());
       if(!dir.exists()) {
         if(!dir.mkdirs()) {
-          logger->info(EX_MAKE_DIR, dir.getPath().c_str(), strerror(errno));
+          getLogger()->info(EX_MAKE_DIR,
+                            dir.getPath().c_str(), strerror(errno));
           return;
         }
       } else if(!dir.isDir()) {
-        logger->info(EX_NOT_DIRECTORY, dir.getPath().c_str());
+        getLogger()->info(EX_NOT_DIRECTORY, dir.getPath().c_str());
         return;
       }
     }
@@ -127,12 +128,12 @@ void DHTAutoSaveCommand::save()
       serializer.serialize(o);
     }
     if(!File(tempFile).renameTo(dhtFile)) {
-      logger->error("Cannot move file from %s to %s.",
-                    tempFile.c_str(), dhtFile.c_str());
+      getLogger()->error("Cannot move file from %s to %s.",
+                         tempFile.c_str(), dhtFile.c_str());
     }
   } catch(RecoverableException& e) {
-    logger->error("Exception caught while saving DHT routing table to %s",
-                  e, dhtFile.c_str());
+    getLogger()->error("Exception caught while saving DHT routing table to %s",
+                       e, dhtFile.c_str());
   }
 }
 

+ 24 - 18
src/DHTEntryPointNameResolveCommand.cc

@@ -101,7 +101,7 @@ bool DHTEntryPointNameResolveCommand::execute()
             return false;
           }
         } catch(RecoverableException& e) {
-          logger->error(EX_EXCEPTION_CAUGHT, e);
+          getLogger()->error(EX_EXCEPTION_CAUGHT, e);
         }
         _resolver->reset();
         _entryPoints.pop_front();
@@ -122,22 +122,24 @@ bool DHTEntryPointNameResolveCommand::execute()
             _resolvedEntryPoints.push_back(p);
             addPingTask(p);
           } catch(RecoverableException& e) {
-            logger->error(EX_EXCEPTION_CAUGHT, e);
+            getLogger()->error(EX_EXCEPTION_CAUGHT, e);
           }
           _entryPoints.pop_front();
         }
       }
     if(_bootstrapEnabled && _resolvedEntryPoints.size()) {
-      _taskQueue->addPeriodicTask1(_taskFactory->createNodeLookupTask(_localNode->getID()));
+      _taskQueue->addPeriodicTask1(_taskFactory->createNodeLookupTask
+                                   (_localNode->getID()));
       _taskQueue->addPeriodicTask1(_taskFactory->createBucketRefreshTask());
     }
   } catch(RecoverableException& e) {
-    logger->error(EX_EXCEPTION_CAUGHT, e);
+    getLogger()->error(EX_EXCEPTION_CAUGHT, e);
   }
   return true;
 }
 
-void DHTEntryPointNameResolveCommand::addPingTask(const std::pair<std::string, uint16_t>& addr)
+void DHTEntryPointNameResolveCommand::addPingTask
+(const std::pair<std::string, uint16_t>& addr)
 {
   SharedHandle<DHTNode> entryNode(new DHTNode());
   entryNode->setIPAddress(addr.first);
@@ -154,26 +156,26 @@ bool DHTEntryPointNameResolveCommand::resolveHostname
 {
   switch(resolver->getStatus()) {
   case AsyncNameResolver::STATUS_READY:
-    if(logger->info()) {
-      logger->info(MSG_RESOLVING_HOSTNAME,
-                   util::itos(cuid).c_str(), hostname.c_str());
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_RESOLVING_HOSTNAME,
+                        util::itos(getCuid()).c_str(), hostname.c_str());
     }
     resolver->resolve(hostname);
     setNameResolverCheck(resolver);
     return false;
   case AsyncNameResolver::STATUS_SUCCESS:
-    if(logger->info()) {
-      logger->info(MSG_NAME_RESOLUTION_COMPLETE,
-                   util::itos(cuid).c_str(),
-                   resolver->getHostname().c_str(),
-                   resolver->getResolvedAddresses().front().c_str());
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_NAME_RESOLUTION_COMPLETE,
+                        util::itos(getCuid()).c_str(),
+                        resolver->getHostname().c_str(),
+                        resolver->getResolvedAddresses().front().c_str());
     }
     return true;
     break;
   case AsyncNameResolver::STATUS_ERROR:
     throw DL_ABORT_EX
       (StringFormat(MSG_NAME_RESOLUTION_FAILED,
-                    util::itos(cuid).c_str(),
+                    util::itos(getCuid()).c_str(),
                     hostname.c_str(),
                     resolver->getError().c_str()).str());
   default:
@@ -199,22 +201,26 @@ void DHTEntryPointNameResolveCommand::setBootstrapEnabled(bool f)
   _bootstrapEnabled = f;
 }
 
-void DHTEntryPointNameResolveCommand::setTaskQueue(const SharedHandle<DHTTaskQueue>& taskQueue)
+void DHTEntryPointNameResolveCommand::setTaskQueue
+(const SharedHandle<DHTTaskQueue>& taskQueue)
 {
   _taskQueue = taskQueue;
 }
 
-void DHTEntryPointNameResolveCommand::setTaskFactory(const SharedHandle<DHTTaskFactory>& taskFactory)
+void DHTEntryPointNameResolveCommand::setTaskFactory
+(const SharedHandle<DHTTaskFactory>& taskFactory)
 {
   _taskFactory = taskFactory;
 }
 
-void DHTEntryPointNameResolveCommand::setRoutingTable(const SharedHandle<DHTRoutingTable>& routingTable)
+void DHTEntryPointNameResolveCommand::setRoutingTable
+(const SharedHandle<DHTRoutingTable>& routingTable)
 {
   _routingTable = routingTable;
 }
 
-void DHTEntryPointNameResolveCommand::setLocalNode(const SharedHandle<DHTNode>& localNode)
+void DHTEntryPointNameResolveCommand::setLocalNode
+(const SharedHandle<DHTNode>& localNode)
 {
   _localNode = localNode;
 }

+ 4 - 4
src/DHTGetPeersCommand.cc

@@ -80,10 +80,10 @@ bool DHTGetPeersCommand::execute()
      ((_numRetry > 0 &&
        _lastGetPeerTime.difference(global::wallclock) >= (time_t)_numRetry*5) ||
       _lastGetPeerTime.difference(global::wallclock) >= GET_PEER_INTERVAL)) {
-    if(logger->debug()) {
-      logger->debug("Issuing PeerLookup for infoHash=%s",
-                    bittorrent::getInfoHashString
-                    (_requestGroup->getDownloadContext()).c_str());
+    if(getLogger()->debug()) {
+      getLogger()->debug("Issuing PeerLookup for infoHash=%s",
+                         bittorrent::getInfoHashString
+                         (_requestGroup->getDownloadContext()).c_str());
     }
     _task = _taskFactory->createPeerLookupTask
       (_requestGroup->getDownloadContext(), _btRuntime, _peerStorage);

+ 1 - 1
src/DHTInteractionCommand.cc

@@ -90,7 +90,7 @@ bool DHTInteractionCommand::execute()
   try {
     _dispatcher->sendMessages();
   } catch(RecoverableException& e) {
-    logger->error(EX_EXCEPTION_CAUGHT, e);
+    getLogger()->error(EX_EXCEPTION_CAUGHT, e);
   }
   _e->addCommand(this);
   return false;

+ 1 - 1
src/DHTPeerAnnounceCommand.cc

@@ -62,7 +62,7 @@ void DHTPeerAnnounceCommand::process()
   try {
     _peerAnnounceStorage->handleTimeout();
   } catch(RecoverableException& e) {
-    logger->error(EX_EXCEPTION_CAUGHT, e);
+    getLogger()->error(EX_EXCEPTION_CAUGHT, e);
   }
 }
 

+ 1 - 1
src/DHTTokenUpdateCommand.cc

@@ -63,7 +63,7 @@ void DHTTokenUpdateCommand::process()
   try {
     _tokenTracker->updateTokenSecret();
   } catch(RecoverableException& e) {
-    logger->error(EX_EXCEPTION_CAUGHT, e);
+    getLogger()->error(EX_EXCEPTION_CAUGHT, e);
   }
 }
 

+ 38 - 28
src/DownloadCommand.cc

@@ -84,7 +84,8 @@ DownloadCommand::DownloadCommand(cuid_t cuid,
 #ifdef ENABLE_MESSAGE_DIGEST
   {
     if(getOption()->getAsBool(PREF_REALTIME_CHUNK_CHECKSUM)) {
-      std::string algo = _requestGroup->getDownloadContext()->getPieceHashAlgo();
+      std::string algo =
+        _requestGroup->getDownloadContext()->getPieceHashAlgo();
       if(MessageDigestContext::supports(algo)) {
         _messageDigestContext.reset(new MessageDigestContext());
         _messageDigestContext->trySetAlgo(algo);
@@ -124,7 +125,10 @@ bool DownloadCommand::executeInternal() {
       bufSize = std::min(segment->getLength()-segment->getWrittenLength(),
                          BUFSIZE);
     } else {
-      bufSize = std::min(static_cast<size_t>(_fileEntry->getLastOffset()-segment->getPositionToWrite()), BUFSIZE);
+      bufSize =
+        std::min(static_cast<size_t>
+                 (_fileEntry->getLastOffset()-segment->getPositionToWrite()),
+                 BUFSIZE);
     }
   } else {
     bufSize = BUFSIZE;
@@ -185,7 +189,8 @@ bool DownloadCommand::executeInternal() {
       segmentPartComplete = true;
     }
   } else if(!_transferEncodingDecoder.isNull() &&
-            (segment->complete() || segment->getPositionToWrite() == _fileEntry->getLastOffset())) {
+            (segment->complete() ||
+             segment->getPositionToWrite() == _fileEntry->getLastOffset())) {
     // In this case, transferEncodingDecoder is used and
     // Content-Length is known.
     segmentPartComplete = true;
@@ -206,43 +211,48 @@ bool DownloadCommand::executeInternal() {
       // If segment->getLength() == 0, the server doesn't provide
       // content length, but the client detected that download
       // completed.
-      if(logger->info()) {
-        logger->info(MSG_SEGMENT_DOWNLOAD_COMPLETED, util::itos(cuid).c_str());
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_SEGMENT_DOWNLOAD_COMPLETED,
+                          util::itos(getCuid()).c_str());
       }
 #ifdef ENABLE_MESSAGE_DIGEST
 
       {
         const std::string& expectedPieceHash =
-          _requestGroup->getDownloadContext()->getPieceHash(segment->getIndex());
+          _requestGroup->getDownloadContext()->getPieceHash
+          (segment->getIndex());
         if(_pieceHashValidationEnabled && !expectedPieceHash.empty()) {
           if(segment->isHashCalculated()) {
-            if(logger->debug()) {
-              logger->debug("Hash is available! index=%lu",
-                            static_cast<unsigned long>(segment->getIndex()));
+            if(getLogger()->debug()) {
+              getLogger()->debug
+                ("Hash is available! index=%lu",
+                 static_cast<unsigned long>(segment->getIndex()));
             }
-            validatePieceHash(segment, expectedPieceHash, segment->getHashString());
+            validatePieceHash
+              (segment, expectedPieceHash, segment->getHashString());
           } else {
             _messageDigestContext->digestReset();
-            validatePieceHash(segment, expectedPieceHash,
-                              MessageDigestHelper::digest
-                              (_messageDigestContext.get(),
-                               _requestGroup->getPieceStorage()->getDiskAdaptor(),
-                               segment->getPosition(),
-                               segment->getLength()));
+            validatePieceHash
+              (segment, expectedPieceHash,
+               MessageDigestHelper::digest
+               (_messageDigestContext.get(),
+                _requestGroup->getPieceStorage()->getDiskAdaptor(),
+                segment->getPosition(),
+                segment->getLength()));
           }
         } else {
-          _requestGroup->getSegmentMan()->completeSegment(cuid, segment);
+          _requestGroup->getSegmentMan()->completeSegment(getCuid(), segment);
         }
       }
 
 #else // !ENABLE_MESSAGE_DIGEST
-      _requestGroup->getSegmentMan()->completeSegment(cuid, segment);
+      _requestGroup->getSegmentMan()->completeSegment(getCuid(), segment);
 #endif // !ENABLE_MESSAGE_DIGEST
     } else {
       // If segment is not canceled here, in the next pipelining
       // request, aria2 requests bad range
       // [FileEntry->getLastOffset(), FileEntry->getLastOffset())
-      _requestGroup->getSegmentMan()->cancelSegment(cuid, segment);
+      _requestGroup->getSegmentMan()->cancelSegment(getCuid(), segment);
     }
     checkLowestDownloadSpeed();
     // this unit is going to download another segment.
@@ -314,7 +324,7 @@ bool DownloadCommand::prepareForNextSegment() {
       SharedHandle<SegmentMan> segmentMan = _requestGroup->getSegmentMan();
       SharedHandle<Segment> nextSegment =
         segmentMan->getCleanSegmentIfOwnerIsIdle
-        (cuid, tempSegment->getIndex()+1);
+        (getCuid(), tempSegment->getIndex()+1);
       if(nextSegment.isNull()) {
         return prepareForRetry(0);
       } else {
@@ -334,16 +344,16 @@ void DownloadCommand::validatePieceHash(const SharedHandle<Segment>& segment,
                                         const std::string& actualPieceHash)
 {
   if(actualPieceHash == expectedPieceHash) {
-    logger->info(MSG_GOOD_CHUNK_CHECKSUM, actualPieceHash.c_str());
-    _requestGroup->getSegmentMan()->completeSegment(cuid, segment);
+    getLogger()->info(MSG_GOOD_CHUNK_CHECKSUM, actualPieceHash.c_str());
+    _requestGroup->getSegmentMan()->completeSegment(getCuid(), segment);
   } else {
-    logger->info(EX_INVALID_CHUNK_CHECKSUM,
-                 segment->getIndex(),
-                 util::itos(segment->getPosition(), true).c_str(),
-                 expectedPieceHash.c_str(),
-                 actualPieceHash.c_str());
+    getLogger()->info(EX_INVALID_CHUNK_CHECKSUM,
+                      segment->getIndex(),
+                      util::itos(segment->getPosition(), true).c_str(),
+                      expectedPieceHash.c_str(),
+                      actualPieceHash.c_str());
     segment->clear();
-    _requestGroup->getSegmentMan()->cancelSegment(cuid);
+    _requestGroup->getSegmentMan()->cancelSegment(getCuid());
     throw DL_RETRY_EX
       (StringFormat("Invalid checksum index=%d", segment->getIndex()).str());
   }

+ 10 - 7
src/FileAllocationCommand.cc

@@ -68,10 +68,11 @@ bool FileAllocationCommand::executeInternal()
   }
   _fileAllocationEntry->allocateChunk();
   if(_fileAllocationEntry->finished()) {
-    if(logger->debug()) {
-      logger->debug(MSG_ALLOCATION_COMPLETED,
-                    _timer.difference(global::wallclock),
-                    util::itos(_requestGroup->getTotalLength(), true).c_str());
+    if(getLogger()->debug()) {
+      getLogger()->debug
+        (MSG_ALLOCATION_COMPLETED,
+         _timer.difference(global::wallclock),
+         util::itos(_requestGroup->getTotalLength(), true).c_str());
     }
     _e->getFileAllocationMan()->dropPickedEntry();
     
@@ -94,9 +95,11 @@ bool FileAllocationCommand::executeInternal()
 bool FileAllocationCommand::handleException(Exception& e)
 {
   _e->getFileAllocationMan()->dropPickedEntry();
-  logger->error(MSG_FILE_ALLOCATION_FAILURE, e, util::itos(cuid).c_str());
-  logger->error(MSG_DOWNLOAD_NOT_COMPLETE, util::itos(cuid).c_str(),
-                _requestGroup->getDownloadContext()->getBasePath().c_str());
+  getLogger()->error
+    (MSG_FILE_ALLOCATION_FAILURE, e, util::itos(getCuid()).c_str());
+  getLogger()->error
+    (MSG_DOWNLOAD_NOT_COMPLETE, util::itos(getCuid()).c_str(),
+     _requestGroup->getDownloadContext()->getBasePath().c_str());
   return true;
 }
 

+ 3 - 2
src/FileAllocationDispatcherCommand.cc

@@ -54,8 +54,9 @@ Command* FileAllocationDispatcherCommand::createCommand
 (const SharedHandle<FileAllocationEntry>& entry)
 {
   cuid_t newCUID = _e->newCUID();
-  if(logger->info()) {
-    logger->info(MSG_FILE_ALLOCATION_DISPATCH, util::itos(newCUID).c_str());
+  if(getLogger()->info()) {
+    getLogger()->info(MSG_FILE_ALLOCATION_DISPATCH,
+                      util::itos(newCUID).c_str());
   }
   FileAllocationCommand* command =
     new FileAllocationCommand(newCUID, entry->getRequestGroup(), _e, entry);

+ 1 - 1
src/FillRequestGroupCommand.cc

@@ -70,7 +70,7 @@ bool FillRequestGroupCommand::execute()
       rgman->clearQueueCheck();
       rgman->fillRequestGroupFromReserver(_e);
     } catch(RecoverableException& ex) {
-      logger->error(EX_EXCEPTION_CAUGHT, ex);
+      getLogger()->error(EX_EXCEPTION_CAUGHT, ex);
       // Re-request queue check to fulfill the requests of all
       // downloads, some might come after this exception.
       rgman->requestQueueCheck();

+ 5 - 2
src/FtpDownloadCommand.cc

@@ -70,9 +70,12 @@ FtpDownloadCommand::~FtpDownloadCommand() {}
 bool FtpDownloadCommand::prepareForNextSegment()
 {
   if(getOption()->getAsBool(PREF_FTP_REUSE_CONNECTION) &&
-     static_cast<uint64_t>(_fileEntry->gtoloff(_segments.front()->getPositionToWrite())) == _fileEntry->getLength()) {
+     static_cast<uint64_t>
+     (_fileEntry->gtoloff(_segments.front()->getPositionToWrite())) ==
+     _fileEntry->getLength()) {
     Command* command = new FtpFinishDownloadCommand
-      (cuid, req, _fileEntry, _requestGroup, _ftpConnection, e, ctrlSocket);
+      (getCuid(), req, _fileEntry, _requestGroup, _ftpConnection, e,
+       ctrlSocket);
     e->addCommand(command);
 
     if(_requestGroup->downloadFinished()) {

+ 1 - 1
src/FtpFinishDownloadCommand.cc

@@ -90,7 +90,7 @@ bool FtpFinishDownloadCommand::execute()
                     socket, options);
     }
   } catch(RecoverableException& e) {
-    logger->info(EX_EXCEPTION_CAUGHT, e);
+    getLogger()->info(EX_EXCEPTION_CAUGHT, e);
   }
   if(_requestGroup->downloadFinished()) {
     return true;

+ 14 - 14
src/FtpInitiateConnectionCommand.cc

@@ -93,9 +93,9 @@ Command* FtpInitiateConnectionCommand::createNextCommand
          proxyRequest->getHost(), proxyRequest->getPort());
     }
     if(pooledSocket.isNull()) {
-      if(logger->info()) {
-        logger->info(MSG_CONNECTING_TO_SERVER,
-                     util::itos(cuid).c_str(), addr.c_str(), port);
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                          util::itos(getCuid()).c_str(), addr.c_str(), port);
       }
       socket.reset(new SocketCore());
       socket->establishConnection(addr, port);
@@ -104,17 +104,17 @@ Command* FtpInitiateConnectionCommand::createNextCommand
         // Use GET for FTP via HTTP proxy.
         req->setMethod(Request::METHOD_GET);
         SharedHandle<HttpConnection> hc
-          (new HttpConnection(cuid, socket, getOption().get()));
+          (new HttpConnection(getCuid(), socket, getOption().get()));
         
         HttpRequestCommand* c =
-          new HttpRequestCommand(cuid, req, _fileEntry,
+          new HttpRequestCommand(getCuid(), req, _fileEntry,
                                  _requestGroup, hc, e, socket);
         c->setConnectedAddr(hostname, addr, port);
         c->setProxyRequest(proxyRequest);
         command = c;
       } else if(proxyMethod == V_TUNNEL) {
         FtpTunnelRequestCommand* c =
-          new FtpTunnelRequestCommand(cuid, req, _fileEntry,
+          new FtpTunnelRequestCommand(getCuid(), req, _fileEntry,
                                       _requestGroup, e,
                                       proxyRequest, socket);
         c->setConnectedAddr(hostname, addr, port);
@@ -126,7 +126,7 @@ Command* FtpInitiateConnectionCommand::createNextCommand
     } else {
       if(proxyMethod == V_TUNNEL) {
         command =
-          new FtpNegotiationCommand(cuid, req, _fileEntry,
+          new FtpNegotiationCommand(getCuid(), req, _fileEntry,
                                     _requestGroup, e, pooledSocket,
                                     FtpNegotiationCommand::SEQ_SEND_CWD,
                                     options["baseWorkingDir"]);
@@ -134,10 +134,10 @@ Command* FtpInitiateConnectionCommand::createNextCommand
         // Use GET for FTP via HTTP proxy.
         req->setMethod(Request::METHOD_GET);
         SharedHandle<HttpConnection> hc
-          (new HttpConnection(cuid, pooledSocket, getOption().get()));
+          (new HttpConnection(getCuid(), pooledSocket, getOption().get()));
         
         HttpRequestCommand* c =
-          new HttpRequestCommand(cuid, req, _fileEntry,
+          new HttpRequestCommand(getCuid(), req, _fileEntry,
                                  _requestGroup, hc, e, pooledSocket);
         c->setProxyRequest(proxyRequest);
         command = c;
@@ -153,20 +153,20 @@ Command* FtpInitiateConnectionCommand::createNextCommand
                          e->getAuthConfigFactory()->createAuthConfig
                          (req, getOption().get())->getUser());
     if(pooledSocket.isNull()) {
-      if(logger->info()) {
-        logger->info(MSG_CONNECTING_TO_SERVER,
-                     util::itos(cuid).c_str(), addr.c_str(), port);
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                          util::itos(getCuid()).c_str(), addr.c_str(), port);
       }
       socket.reset(new SocketCore());
       socket->establishConnection(addr, port);
       FtpNegotiationCommand* c =
-        new FtpNegotiationCommand(cuid, req, _fileEntry,
+        new FtpNegotiationCommand(getCuid(), req, _fileEntry,
                                   _requestGroup, e, socket);
       c->setConnectedAddr(hostname, addr, port);
       command = c;
     } else {
       command =
-        new FtpNegotiationCommand(cuid, req, _fileEntry,
+        new FtpNegotiationCommand(getCuid(), req, _fileEntry,
                                   _requestGroup, e, pooledSocket,
                                   FtpNegotiationCommand::SEQ_SEND_CWD,
                                   options["baseWorkingDir"]);

+ 51 - 43
src/FtpNegotiationCommand.cc

@@ -109,9 +109,10 @@ bool FtpNegotiationCommand::executeInternal() {
   } else if(sequence == SEQ_NEGOTIATION_COMPLETED) {
     FtpDownloadCommand* command =
       new FtpDownloadCommand
-      (cuid, req, _fileEntry, _requestGroup, ftp, e, dataSocket, socket);
+      (getCuid(), req, _fileEntry, _requestGroup, ftp, e, dataSocket, socket);
     command->setStartupIdleTime(getOption()->getAsInt(PREF_STARTUP_IDLE_TIME));
-    command->setLowestDownloadSpeedLimit(getOption()->getAsInt(PREF_LOWEST_SPEED_LIMIT));
+    command->setLowestDownloadSpeedLimit
+      (getOption()->getAsInt(PREF_LOWEST_SPEED_LIMIT));
     if(!_fileEntry->isSingleHostMultiConnectionEnabled()) {
       _fileEntry->removeURIWhoseHostnameIs(req->getHost());
     }
@@ -119,7 +120,8 @@ bool FtpNegotiationCommand::executeInternal() {
       (_fileEntry->getRemainingUris(), command);
     e->addCommand(command);
     return true;
-  } else if(sequence == SEQ_HEAD_OK || sequence == SEQ_DOWNLOAD_ALREADY_COMPLETED) {
+  } else if(sequence == SEQ_HEAD_OK ||
+            sequence == SEQ_DOWNLOAD_ALREADY_COMPLETED) {
     return true;
   } else if(sequence == SEQ_FILE_PREPARATION) {
     if(getOption()->getAsBool(PREF_FTP_PASV)) {
@@ -252,9 +254,9 @@ bool FtpNegotiationCommand::recvPwd()
     throw DL_ABORT_EX(StringFormat(EX_BAD_STATUS, status).str());
   }
   ftp->setBaseWorkingDir(pwd);
-  if(logger->info()) {
-    logger->info("CUID#%s - base working directory is '%s'",
-                 util::itos(cuid).c_str(), pwd.c_str());
+  if(getLogger()->info()) {
+    getLogger()->info("CUID#%s - base working directory is '%s'",
+                      util::itos(getCuid()).c_str(), pwd.c_str());
   }
   sequence = SEQ_SEND_CWD;
   return true;
@@ -318,23 +320,24 @@ bool FtpNegotiationCommand::recvMdtm()
       time_t t = lastModifiedTime.getTime();
       struct tm* tms = gmtime(&t); // returned struct is statically allocated.
       if(tms) {
-        if(logger->debug()) {
-          logger->debug("MDTM result was parsed as: %s GMT", asctime(tms));
+        if(getLogger()->debug()) {
+          getLogger()->debug("MDTM result was parsed as: %s GMT", asctime(tms));
         }
       } else {
-        if(logger->debug()) {
-          logger->debug("gmtime() failed for MDTM result.");
+        if(getLogger()->debug()) {
+          getLogger()->debug("gmtime() failed for MDTM result.");
         }
       }
     } else {
-      if(logger->debug()) {
-        logger->debug("MDTM response was returned, but it seems not to be a"
-                      " time value as in specified in RFC3659.");
+      if(getLogger()->debug()) {
+        getLogger()->debug("MDTM response was returned, but it seems not to be"
+                           " a time value as in specified in RFC3659.");
       }
     }
   } else {
-    if(logger->info()) {
-      logger->info("CUID#%s - MDTM command failed.", util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info("CUID#%s - MDTM command failed.",
+                        util::itos(getCuid()).c_str());
     }
   }
   sequence = SEQ_SEND_SIZE;
@@ -385,9 +388,9 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
       _requestGroup->getPieceStorage()->markAllPiecesDone();
       sequence = SEQ_DOWNLOAD_ALREADY_COMPLETED;
 
-      logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
-                     util::itos(_requestGroup->getGID()).c_str(),
-                     _requestGroup->getFirstFilePath().c_str());
+      getLogger()->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+                          util::itos(_requestGroup->getGID()).c_str(),
+                          _requestGroup->getFirstFilePath().c_str());
 
       poolConnection();
 
@@ -406,7 +409,7 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
     // We have to make sure that command that has Request object must
     // have segment after PieceStorage is initialized. See
     // AbstractCommand::execute()
-    _requestGroup->getSegmentMan()->getSegment(cuid, 0);
+    _requestGroup->getSegmentMan()->getSegment(getCuid(), 0);
     return true;
   } else {
     _requestGroup->adjustFilename
@@ -421,15 +424,18 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
       return false;
     }
 
-    BtProgressInfoFileHandle infoFile(new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(), _requestGroup->getPieceStorage(), getOption().get()));
+    BtProgressInfoFileHandle infoFile
+      (new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(),
+                                     _requestGroup->getPieceStorage(),
+                                     getOption().get()));
     if(!infoFile->exists() && _requestGroup->downloadFinishedByFileLength()) {
       _requestGroup->getPieceStorage()->markAllPiecesDone();
 
       sequence = SEQ_DOWNLOAD_ALREADY_COMPLETED;
       
-      logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
-                     util::itos(_requestGroup->getGID()).c_str(),
-                     _requestGroup->getFirstFilePath().c_str());
+      getLogger()->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+                          util::itos(_requestGroup->getGID()).c_str(),
+                          _requestGroup->getFirstFilePath().c_str());
 
       poolConnection();
       
@@ -439,7 +445,7 @@ bool FtpNegotiationCommand::onFileSizeDetermined(uint64_t totalLength)
     // We have to make sure that command that has Request object must
     // have segment after PieceStorage is initialized. See
     // AbstractCommand::execute()
-    _requestGroup->getSegmentMan()->getSegment(cuid, 0);
+    _requestGroup->getSegmentMan()->getSegment(getCuid(), 0);
 
     prepareForNextAction(this);
 
@@ -458,7 +464,8 @@ bool FtpNegotiationCommand::recvSize() {
 
     if(size > INT64_MAX) {
       throw DL_ABORT_EX
-        (StringFormat(EX_TOO_LARGE_FILE, util::uitos(size, true).c_str()).str());
+        (StringFormat(EX_TOO_LARGE_FILE,
+                      util::uitos(size, true).c_str()).str());
     }
     if(_requestGroup->getPieceStorage().isNull()) {
 
@@ -470,9 +477,9 @@ bool FtpNegotiationCommand::recvSize() {
     }
 
   } else {
-    if(logger->info()) {
-      logger->info("CUID#%s - The remote FTP Server doesn't recognize SIZE"
-                   " command. Continue.", util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info("CUID#%s - The remote FTP Server doesn't recognize SIZE"
+                        " command. Continue.", util::itos(getCuid()).c_str());
     }
     // Even if one of the other servers waiting in the queue supports SIZE
     // command, resuming and segmented downloading are disabled when the first
@@ -555,10 +562,10 @@ bool FtpNegotiationCommand::recvPasv() {
     return true;
   } else {
     // make a data connection to the server.
-    if(logger->info()) {
-      logger->info(MSG_CONNECTING_TO_SERVER, util::itos(cuid).c_str(),
-                   dest.first.c_str(),
-                   dest.second);
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_CONNECTING_TO_SERVER, util::itos(getCuid()).c_str(),
+                        dest.first.c_str(),
+                        dest.second);
     }
     dataSocket.reset(new SocketCore());
     dataSocket->establishConnection(dest.first, dest.second);
@@ -578,15 +585,15 @@ bool FtpNegotiationCommand::resolveProxy()
   if(_proxyAddr.empty()) {
     return false;
   }
-  if(logger->info()) {
-    logger->info(MSG_CONNECTING_TO_SERVER, util::itos(cuid).c_str(),
-                 _proxyAddr.c_str(), proxyReq->getPort());
+  if(getLogger()->info()) {
+    getLogger()->info(MSG_CONNECTING_TO_SERVER, util::itos(getCuid()).c_str(),
+                      _proxyAddr.c_str(), proxyReq->getPort());
   }
   dataSocket.reset(new SocketCore());                  
   dataSocket->establishConnection(_proxyAddr, proxyReq->getPort());
   disableReadCheckSocket();
   setWriteCheckSocket(dataSocket);
-  _http.reset(new HttpConnection(cuid, dataSocket, getOption().get()));
+  _http.reset(new HttpConnection(getCuid(), dataSocket, getOption().get()));
   sequence = SEQ_SEND_TUNNEL_REQUEST;
   return false;
 }
@@ -607,15 +614,16 @@ bool FtpNegotiationCommand::sendTunnelRequest()
             (StringFormat(MSG_ESTABLISHING_CONNECTION_FAILED,
                           error.c_str()).str());
         } else {
-          if(logger->info()) {
-            logger->info(MSG_CONNECT_FAILED_AND_RETRY,
-                         util::itos(cuid).c_str(),
-                         _proxyAddr.c_str(), proxyReq->getPort());
+          if(getLogger()->info()) {
+            getLogger()->info(MSG_CONNECT_FAILED_AND_RETRY,
+                              util::itos(getCuid()).c_str(),
+                              _proxyAddr.c_str(), proxyReq->getPort());
           }
           _proxyAddr = nextProxyAddr;
-          if(logger->info()) {
-            logger->info(MSG_CONNECTING_TO_SERVER, util::itos(cuid).c_str(),
-                         _proxyAddr.c_str(), proxyReq->getPort());
+          if(getLogger()->info()) {
+            getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                              util::itos(getCuid()).c_str(),
+                              _proxyAddr.c_str(), proxyReq->getPort());
           }
           dataSocket->establishConnection(_proxyAddr, proxyReq->getPort());
           return false;

+ 1 - 1
src/FtpTunnelRequestCommand.cc

@@ -58,7 +58,7 @@ FtpTunnelRequestCommand::~FtpTunnelRequestCommand() {}
 Command* FtpTunnelRequestCommand::getNextCommand()
 {
   return new FtpTunnelResponseCommand
-    (cuid, req, _fileEntry, _requestGroup, httpConnection, e, socket);
+    (getCuid(), req, _fileEntry, _requestGroup, httpConnection, e, socket);
 }
 
 } // namespace aria2

+ 1 - 1
src/FtpTunnelResponseCommand.cc

@@ -59,7 +59,7 @@ FtpTunnelResponseCommand::~FtpTunnelResponseCommand() {}
 
 Command* FtpTunnelResponseCommand::getNextCommand()
 {
-  return new FtpNegotiationCommand(cuid, req, _fileEntry,
+  return new FtpNegotiationCommand(getCuid(), req, _fileEntry,
                                    _requestGroup, e, socket);
 }
 

+ 1 - 1
src/HttpDownloadCommand.cc

@@ -74,7 +74,7 @@ bool HttpDownloadCommand::prepareForNextSegment() {
   bool downloadFinished = _requestGroup->downloadFinished();
   if(req->isPipeliningEnabled() && !downloadFinished) {
     HttpRequestCommand* command =
-      new HttpRequestCommand(cuid, req, _fileEntry,
+      new HttpRequestCommand(getCuid(), req, _fileEntry,
                              _requestGroup, _httpConnection, e,
                              socket);
     // Set proxy request here. aria2 sends the HTTP request specialized for

+ 14 - 13
src/HttpInitiateConnectionCommand.cc

@@ -77,24 +77,24 @@ Command* HttpInitiateConnectionCommand::createNextCommand
                          proxyRequest->getHost(), proxyRequest->getPort());
     std::string proxyMethod = resolveProxyMethod(req->getProtocol());
     if(pooledSocket.isNull()) {
-      if(logger->info()) {
-        logger->info(MSG_CONNECTING_TO_SERVER,
-                     util::itos(cuid).c_str(), addr.c_str(), port);
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                          util::itos(getCuid()).c_str(), addr.c_str(), port);
       }
       socket.reset(new SocketCore());
       socket->establishConnection(addr, port);
 
       if(proxyMethod == V_TUNNEL) {
         HttpProxyRequestCommand* c =
-          new HttpProxyRequestCommand(cuid, req, _fileEntry,
+          new HttpProxyRequestCommand(getCuid(), req, _fileEntry,
                                       _requestGroup, e,
                                       proxyRequest, socket);
         c->setConnectedAddr(hostname, addr, port);
         command = c;
       } else if(proxyMethod == V_GET) {
         SharedHandle<HttpConnection> httpConnection
-          (new HttpConnection(cuid, socket, getOption().get()));
-        HttpRequestCommand* c = new HttpRequestCommand(cuid, req,
+          (new HttpConnection(getCuid(), socket, getOption().get()));
+        HttpRequestCommand* c = new HttpRequestCommand(getCuid(), req,
                                                        _fileEntry,
                                                        _requestGroup,
                                                        httpConnection, e,
@@ -108,8 +108,8 @@ Command* HttpInitiateConnectionCommand::createNextCommand
       }
     } else {
       SharedHandle<HttpConnection> httpConnection
-        (new HttpConnection(cuid, pooledSocket, getOption().get()));
-      HttpRequestCommand* c = new HttpRequestCommand(cuid, req,
+        (new HttpConnection(getCuid(), pooledSocket, getOption().get()));
+      HttpRequestCommand* c = new HttpRequestCommand(getCuid(), req,
                                                      _fileEntry,
                                                      _requestGroup,
                                                      httpConnection, e,
@@ -123,18 +123,19 @@ Command* HttpInitiateConnectionCommand::createNextCommand
     SharedHandle<SocketCore> pooledSocket =
       e->popPooledSocket(resolvedAddresses, req->getPort());
     if(pooledSocket.isNull()) {
-      if(logger->info()) {
-        logger->info(MSG_CONNECTING_TO_SERVER,
-                     util::itos(cuid).c_str(), addr.c_str(), port);
+      if(getLogger()->info()) {
+        getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                          util::itos(getCuid()).c_str(), addr.c_str(), port);
       }
       socket.reset(new SocketCore());
       socket->establishConnection(addr, port);
     } else {
       socket = pooledSocket;
     }
-    SharedHandle<HttpConnection> httpConnection(new HttpConnection(cuid, socket, getOption().get()));
+    SharedHandle<HttpConnection> httpConnection
+      (new HttpConnection(getCuid(), socket, getOption().get()));
     HttpRequestCommand* c =
-      new HttpRequestCommand(cuid, req, _fileEntry, _requestGroup,
+      new HttpRequestCommand(getCuid(), req, _fileEntry, _requestGroup,
                              httpConnection, e, socket);
     if(pooledSocket.isNull()) {
       c->setConnectedAddr(hostname, addr, port);

+ 12 - 10
src/HttpListenCommand.cc

@@ -74,8 +74,8 @@ bool HttpListenCommand::execute()
       std::pair<std::string, uint16_t> peerInfo;
       socket->getPeerInfo(peerInfo);
 
-      logger->info("XML-RPC: Accepted the connection from %s:%u.",
-                   peerInfo.first.c_str(), peerInfo.second);
+      getLogger()->info("XML-RPC: Accepted the connection from %s:%u.",
+                        peerInfo.first.c_str(), peerInfo.second);
 
       HttpServerCommand* c =
         new HttpServerCommand(_e->newCUID(), _e, socket);
@@ -83,8 +83,8 @@ bool HttpListenCommand::execute()
       _e->addCommand(c);
     }
   } catch(RecoverableException& e) {
-    if(logger->debug()) {
-      logger->debug(MSG_ACCEPT_FAILURE, e, util::itos(cuid).c_str());
+    if(getLogger()->debug()) {
+      getLogger()->debug(MSG_ACCEPT_FAILURE, e, util::itos(getCuid()).c_str());
     }
   }
   _e->addCommand(this);
@@ -97,9 +97,9 @@ bool HttpListenCommand::bindPort(uint16_t port)
     _e->deleteSocketForReadCheck(_serverSocket, this);
   }
   _serverSocket.reset(new SocketCore());
-  if(logger->info()) {
-    logger->info("CUID#%s - Setting up HttpListenCommand",
-                 util::itos(cuid).c_str());
+  if(getLogger()->info()) {
+    getLogger()->info("CUID#%s - Setting up HttpListenCommand",
+                      util::itos(getCuid()).c_str());
   }
   try {
     int flags = 0;
@@ -109,13 +109,15 @@ bool HttpListenCommand::bindPort(uint16_t port)
     _serverSocket->bind(port, flags);
     _serverSocket->beginListen();
     _serverSocket->setNonBlockingMode();
-    if(logger->info()) {
-      logger->info(MSG_LISTENING_PORT, util::itos(cuid).c_str(), port);
+    if(getLogger()->info()) {
+      getLogger()->info(MSG_LISTENING_PORT,
+                        util::itos(getCuid()).c_str(), port);
     }
     _e->addSocketForReadCheck(_serverSocket, this);
     return true;
   } catch(RecoverableException& e) {
-    logger->error(MSG_BIND_FAILURE, e, util::itos(cuid).c_str(), port);
+    getLogger()->error(MSG_BIND_FAILURE, e,
+                       util::itos(getCuid()).c_str(), port);
     if(!_serverSocket.isNull()) {
       _e->deleteSocketForReadCheck(_serverSocket, this);
     }

+ 1 - 1
src/HttpProxyRequestCommand.cc

@@ -58,7 +58,7 @@ HttpProxyRequestCommand::~HttpProxyRequestCommand() {}
 Command* HttpProxyRequestCommand::getNextCommand()
 {
   return new HttpProxyResponseCommand
-    (cuid, req, _fileEntry, _requestGroup, httpConnection, e, socket);
+    (getCuid(), req, _fileEntry, _requestGroup, httpConnection, e, socket);
 }
 
 } // namespace aria2

+ 1 - 1
src/HttpProxyResponseCommand.cc

@@ -59,7 +59,7 @@ HttpProxyResponseCommand::~HttpProxyResponseCommand() {}
 
 Command* HttpProxyResponseCommand::getNextCommand()
 {
-  return new HttpRequestCommand(cuid, req, _fileEntry,
+  return new HttpRequestCommand(getCuid(), req, _fileEntry,
                                 _requestGroup, httpConnection, e, socket);
 }
 

+ 1 - 1
src/HttpRequestCommand.cc

@@ -165,7 +165,7 @@ bool HttpRequestCommand::executeInternal() {
     _httpConnection->sendPendingData();
   }
   if(_httpConnection->sendBufferIsEmpty()) {
-    Command* command = new HttpResponseCommand(cuid, req, _fileEntry,
+    Command* command = new HttpResponseCommand(getCuid(), req, _fileEntry,
                                                _requestGroup,
                                                _httpConnection, e, socket);
     e->addCommand(command);

+ 20 - 15
src/HttpResponseCommand.cc

@@ -115,7 +115,8 @@ bool HttpResponseCommand::executeInternal()
   req->supportsPersistentConnection
     (httpResponse->supportsPersistentConnection());
   if(req->isPipeliningEnabled()) {
-    req->setMaxPipelinedRequest(getOption()->getAsInt(PREF_MAX_HTTP_PIPELINING));
+    req->setMaxPipelinedRequest
+      (getOption()->getAsInt(PREF_MAX_HTTP_PIPELINING));
   }
 
   if(httpResponse->getResponseStatus() >= HttpHeader::S300) {
@@ -181,8 +182,8 @@ bool HttpResponseCommand::executeInternal()
                                    getTransferEncodingDecoder(httpResponse),
                                    getContentEncodingDecoder(httpResponse)));
     } else {
-      e->addCommand(createHttpDownloadCommand(httpResponse,
-                                                      getTransferEncodingDecoder(httpResponse)));
+      e->addCommand(createHttpDownloadCommand
+                    (httpResponse, getTransferEncodingDecoder(httpResponse)));
     }
     return true;
   }
@@ -226,13 +227,16 @@ bool HttpResponseCommand::handleDefaultEncoding
     return true;
   }
 
-  BtProgressInfoFileHandle infoFile(new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(), _requestGroup->getPieceStorage(), getOption().get()));
+  BtProgressInfoFileHandle infoFile
+    (new DefaultBtProgressInfoFile(_requestGroup->getDownloadContext(),
+                                   _requestGroup->getPieceStorage(),
+                                   getOption().get()));
   if(!infoFile->exists() && _requestGroup->downloadFinishedByFileLength()) {
     _requestGroup->getPieceStorage()->markAllPiecesDone();
 
-    logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
-                   util::itos(_requestGroup->getGID()).c_str(),
-                   _requestGroup->getFirstFilePath().c_str());
+    getLogger()->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+                        util::itos(_requestGroup->getGID()).c_str(),
+                        _requestGroup->getFirstFilePath().c_str());
 
     return true;
   }
@@ -242,7 +246,7 @@ bool HttpResponseCommand::handleDefaultEncoding
   // have segment after PieceStorage is initialized. See
   // AbstractCommand::execute()
   SharedHandle<Segment> segment =
-    _requestGroup->getSegmentMan()->getSegment(cuid, 0);
+    _requestGroup->getSegmentMan()->getSegment(getCuid(), 0);
   // pipelining requires implicit range specified. But the request for
   // this response most likely dones't contains range header. This means
   // we can't continue to use this socket because server sends all entity
@@ -255,7 +259,7 @@ bool HttpResponseCommand::handleDefaultEncoding
     command = createHttpDownloadCommand
       (httpResponse, getTransferEncodingDecoder(httpResponse));
   } else {
-    _requestGroup->getSegmentMan()->cancelSegment(cuid);
+    _requestGroup->getSegmentMan()->cancelSegment(getCuid());
     _fileEntry->poolRequest(req);
   }
   // After command is passed to prepareForNextAction(), it is managed
@@ -326,9 +330,9 @@ bool HttpResponseCommand::handleOtherEncoding
     _requestGroup->initPieceStorage();
     _requestGroup->getPieceStorage()->markAllPiecesDone();
 
-    logger->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
-                   util::itos(_requestGroup->getGID()).c_str(),
-                   _requestGroup->getFirstFilePath().c_str());
+    getLogger()->notice(MSG_DOWNLOAD_ALREADY_COMPLETED,
+                        util::itos(_requestGroup->getGID()).c_str(),
+                        _requestGroup->getFirstFilePath().c_str());
 
     poolConnection();
     return true;
@@ -348,7 +352,7 @@ bool HttpResponseCommand::handleOtherEncoding
   // We have to make sure that command that has Request object must
   // have segment after PieceStorage is initialized. See
   // AbstractCommand::execute()
-  _requestGroup->getSegmentMan()->getSegment(cuid, 0);
+  _requestGroup->getSegmentMan()->getSegment(getCuid(), 0);
 
   e->addCommand
     (createHttpDownloadCommand(httpResponse,
@@ -365,7 +369,8 @@ bool HttpResponseCommand::skipResponseBody
   // thrown away.
 
   HttpSkipResponseCommand* command = new HttpSkipResponseCommand
-    (cuid, req, _fileEntry, _requestGroup, httpConnection, httpResponse, e, socket);
+    (getCuid(), req, _fileEntry, _requestGroup, httpConnection, httpResponse,
+     e, socket);
   command->setTransferEncodingDecoder(decoder);
 
   // If request method is HEAD or the response body is zero-length,
@@ -390,7 +395,7 @@ HttpDownloadCommand* HttpResponseCommand::createHttpDownloadCommand
 {
 
   HttpDownloadCommand* command =
-    new HttpDownloadCommand(cuid, req, _fileEntry, _requestGroup,
+    new HttpDownloadCommand(getCuid(), req, _fileEntry, _requestGroup,
                             httpResponse, httpConnection, e, socket);
   command->setStartupIdleTime(getOption()->getAsInt(PREF_STARTUP_IDLE_TIME));
   command->setLowestDownloadSpeedLimit

+ 6 - 5
src/HttpServerBodyCommand.cc

@@ -99,7 +99,7 @@ bool HttpServerBodyCommand::execute()
           std::string responseData = res.toXml(gzip);
           _httpServer->feedResponse(responseData, "text/xml");
           Command* command =
-            new HttpServerResponseCommand(cuid, _httpServer, _e, _socket);
+            new HttpServerResponseCommand(getCuid(), _httpServer, _e, _socket);
           _e->addCommand(command);
           _e->setNoWait(true);
           return true;
@@ -112,7 +112,7 @@ bool HttpServerBodyCommand::execute()
       } 
     } else {
       if(_timeoutTimer.difference(global::wallclock) >= 30) {
-        logger->info("HTTP request body timeout.");
+        getLogger()->info("HTTP request body timeout.");
         return true;
       } else {
         _e->addCommand(this);
@@ -120,9 +120,10 @@ bool HttpServerBodyCommand::execute()
       }
     }
   } catch(RecoverableException& e) {
-    if(logger->info()) {
-      logger->info("CUID#%s - Error occurred while reading HTTP request body",
-                   e, util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info
+        ("CUID#%s - Error occurred while reading HTTP request body",
+         e, util::itos(getCuid()).c_str());
     }
     return true;
   }

+ 10 - 10
src/HttpServerCommand.cc

@@ -111,7 +111,7 @@ bool HttpServerCommand::execute()
                                   "WWW-Authenticate: Basic realm=\"aria2\"",
                                   "","text/html");
         Command* command =
-          new HttpServerResponseCommand(cuid, _httpServer, _e, _socket);
+          new HttpServerResponseCommand(getCuid(), _httpServer, _e, _socket);
         _e->addCommand(command);
         _e->setNoWait(true);
         return true;
@@ -119,20 +119,20 @@ bool HttpServerCommand::execute()
       if(static_cast<uint64_t>
          (_e->getOption()->getAsInt(PREF_XML_RPC_MAX_REQUEST_SIZE)) <
          _httpServer->getContentLength()) {
-        logger->info("Request too long. ContentLength=%s."
-                     " See --xml-rpc-max-request-size option to loose"
-                     " this limitation.",
-                     util::uitos(_httpServer->getContentLength()).c_str());
+        getLogger()->info("Request too long. ContentLength=%s."
+                          " See --xml-rpc-max-request-size option to loose"
+                          " this limitation.",
+                          util::uitos(_httpServer->getContentLength()).c_str());
         return true;
       }
-      Command* command = new HttpServerBodyCommand(cuid, _httpServer, _e,
+      Command* command = new HttpServerBodyCommand(getCuid(), _httpServer, _e,
                                                    _socket);
       _e->addCommand(command);
       _e->setNoWait(true);
       return true;
     } else {
       if(_timeoutTimer.difference(global::wallclock) >= 30) {
-        logger->info("HTTP request timeout.");
+        getLogger()->info("HTTP request timeout.");
         return true;
       } else {
         _e->addCommand(this);
@@ -140,9 +140,9 @@ bool HttpServerCommand::execute()
       }
     }
   } catch(RecoverableException& e) {
-    if(logger->info()) {
-      logger->info("CUID#%s - Error occurred while reading HTTP request",
-                   e, util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info("CUID#%s - Error occurred while reading HTTP request",
+                        e, util::itos(getCuid()).c_str());
     }
     return true;
   }

+ 15 - 12
src/HttpServerResponseCommand.cc

@@ -76,29 +76,32 @@ bool HttpServerResponseCommand::execute()
   try {
     _httpServer->sendResponse();
   } catch(RecoverableException& e) {
-    if(logger->info()) {
-      logger->info("CUID#%s - Error occurred while transmitting response body.",
-                   e, util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info
+        ("CUID#%s - Error occurred while transmitting response body.",
+         e, util::itos(getCuid()).c_str());
     }
     return true;
   }
   if(_httpServer->sendBufferIsEmpty()) {
-    if(logger->info()) {
-      logger->info("CUID#%s - HttpServer: all response transmitted.",
-                   util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info("CUID#%s - HttpServer: all response transmitted.",
+                        util::itos(getCuid()).c_str());
     }
     if(_httpServer->supportsPersistentConnection()) {
-      if(logger->info()) {
-        logger->info("CUID#%s - Persist connection.", util::itos(cuid).c_str());
+      if(getLogger()->info()) {
+        getLogger()->info("CUID#%s - Persist connection.",
+                          util::itos(getCuid()).c_str());
       }
-      _e->addCommand(new HttpServerCommand(cuid, _httpServer, _e, _socket));
+      _e->addCommand
+        (new HttpServerCommand(getCuid(), _httpServer, _e, _socket));
     }
     return true;
   } else {
     if(_timeoutTimer.difference(global::wallclock) >= 10) {
-      if(logger->info()) {
-        logger->info("CUID#%s - HttpServer: Timeout while trasmitting"
-                     " response.", util::itos(cuid).c_str());
+      if(getLogger()->info()) {
+        getLogger()->info("CUID#%s - HttpServer: Timeout while trasmitting"
+                          " response.", util::itos(getCuid()).c_str());
       }
       return true;
     } else {

+ 2 - 2
src/HttpSkipResponseCommand.cc

@@ -118,8 +118,8 @@ bool HttpSkipResponseCommand::executeInternal()
       throw DL_RETRY_EX(EX_GOT_EOF);
     }
   } catch(RecoverableException& e) {
-    if(logger->debug()) {
-      logger->debug(EX_EXCEPTION_CAUGHT, e);
+    if(getLogger()->debug()) {
+      getLogger()->debug(EX_EXCEPTION_CAUGHT, e);
     }
     return processResponse();
   }

+ 5 - 5
src/InitiateConnectionCommand.cc

@@ -101,14 +101,14 @@ bool InitiateConnectionCommand::executeInternal() {
     // TODO ipaddr might not be used if pooled sockt was found.
     e->markBadIPAddress(hostname, ipaddr, port);
     if(!e->findCachedIPAddress(hostname, port).empty()) {
-      if(logger->info()) {
-        logger->info(EX_EXCEPTION_CAUGHT, ex);
-        logger->info(MSG_CONNECT_FAILED_AND_RETRY,
-                     util::itos(cuid).c_str(), ipaddr.c_str(), port);
+      if(getLogger()->info()) {
+        getLogger()->info(EX_EXCEPTION_CAUGHT, ex);
+        getLogger()->info(MSG_CONNECT_FAILED_AND_RETRY,
+                          util::itos(getCuid()).c_str(), ipaddr.c_str(), port);
       }
       Command* command =
         InitiateConnectionCommandFactory::createInitiateConnectionCommand
-        (cuid, req, _fileEntry, _requestGroup, e);
+        (getCuid(), req, _fileEntry, _requestGroup, e);
       e->setNoWait(true);
       e->addCommand(command);
       return true;

+ 13 - 11
src/InitiatorMSEHandshakeCommand.cc

@@ -150,14 +150,15 @@ bool InitiatorMSEHandshakeCommand::executeInternal() {
   case INITIATOR_RECEIVE_PAD_D: {
     if(_mseHandshake->receivePad()) {
       SharedHandle<PeerConnection> peerConnection
-        (new PeerConnection(cuid, socket));
-      if(_mseHandshake->getNegotiatedCryptoType() == MSEHandshake::CRYPTO_ARC4) {
+        (new PeerConnection(getCuid(), socket));
+      if(_mseHandshake->getNegotiatedCryptoType() == MSEHandshake::CRYPTO_ARC4){
         peerConnection->enableEncryption(_mseHandshake->getEncryptor(),
                                          _mseHandshake->getDecryptor());
       }
       PeerInteractionCommand* c =
         new PeerInteractionCommand
-        (cuid, _requestGroup, peer, e, _btRuntime, _pieceStorage, _peerStorage,
+        (getCuid(), _requestGroup, peer, e, _btRuntime, _pieceStorage,
+         _peerStorage,
          socket,
          PeerInteractionCommand::INITIATOR_SEND_HANDSHAKE,
          peerConnection);
@@ -174,10 +175,11 @@ bool InitiatorMSEHandshakeCommand::executeInternal() {
 bool InitiatorMSEHandshakeCommand::prepareForNextPeer(time_t wait)
 {
   if(getOption()->getAsBool(PREF_BT_REQUIRE_CRYPTO)) {
-    if(logger->info()) {
-      logger->info("CUID#%s - Establishing connection using legacy BitTorrent"
-                   " handshake is disabled by preference.",
-                   util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info
+        ("CUID#%s - Establishing connection using legacy BitTorrent"
+         " handshake is disabled by preference.",
+         util::itos(getCuid()).c_str());
     }
     if(_peerStorage->isPeerAvailable() && _btRuntime->lessThanEqMinPeers()) {
       SharedHandle<Peer> peer = _peerStorage->getUnusedPeer();
@@ -192,12 +194,12 @@ bool InitiatorMSEHandshakeCommand::prepareForNextPeer(time_t wait)
     return true;
   } else {
     // try legacy BitTorrent handshake
-    if(logger->info()) {
-      logger->info("CUID#%s - Retry using legacy BitTorrent handshake.",
-                   util::itos(cuid).c_str());
+    if(getLogger()->info()) {
+      getLogger()->info("CUID#%s - Retry using legacy BitTorrent handshake.",
+                        util::itos(getCuid()).c_str());
     }
     PeerInitiateConnectionCommand* command =
-      new PeerInitiateConnectionCommand(cuid, _requestGroup, peer, e,
+      new PeerInitiateConnectionCommand(getCuid(), _requestGroup, peer, e,
                                         _btRuntime, false);
     command->setPeerStorage(_peerStorage);
     command->setPieceStorage(_pieceStorage);

+ 5 - 5
src/LpdDispatchMessageCommand.cc

@@ -64,24 +64,24 @@ bool LpdDispatchMessageCommand::execute()
   }
   if(_dispatcher->isAnnounceReady()) {
     try {
-      logger->info("Dispatching LPD message for infohash=%s",
+      getLogger()->info("Dispatching LPD message for infohash=%s",
                    util::toHex(_dispatcher->getInfoHash()).c_str());
       if(_dispatcher->sendMessage()) {
-        logger->info("Sending LPD message is complete.");
+        getLogger()->info("Sending LPD message is complete.");
         _dispatcher->resetAnnounceTimer();
         _tryCount = 0;
       } else {
         ++_tryCount;
         if(_tryCount >= 5) {
-          logger->info("Sending LPD message %u times but all failed.");
+          getLogger()->info("Sending LPD message %u times but all failed.");
           _dispatcher->resetAnnounceTimer();
           _tryCount = 0;
         } else {
-          logger->info("Could not send LPD message, retry shortly.");
+          getLogger()->info("Could not send LPD message, retry shortly.");
         }
       }
     } catch(RecoverableException& e) {
-      logger->info("Failed to send LPD message.", e);
+      getLogger()->info("Failed to send LPD message.", e);
       _dispatcher->resetAnnounceTimer();
       _tryCount = 0;
     }

+ 14 - 13
src/LpdReceiveMessageCommand.cc

@@ -94,17 +94,18 @@ bool LpdReceiveMessageCommand::execute()
     SharedHandle<DownloadContext> dctx =
       reg->getDownloadContext(m->getInfoHash());
     if(dctx.isNull()) {
-      if(logger->debug()) {
-        logger->debug("Download Context is null for infohash=%s.",
-                      util::toHex(m->getInfoHash()).c_str());
+      if(getLogger()->debug()) {
+        getLogger()->debug("Download Context is null for infohash=%s.",
+                           util::toHex(m->getInfoHash()).c_str());
       }
       continue;
     }
     const BDE& torrentAttrs = dctx->getAttribute(bittorrent::BITTORRENT);
     if(torrentAttrs.containsKey(bittorrent::PRIVATE)) {
       if(torrentAttrs[bittorrent::PRIVATE].i() == 1) {
-        if(logger->debug()) {
-          logger->debug("Ignore LPD message because the torrent is private.");
+        if(getLogger()->debug()) {
+          getLogger()->debug
+            ("Ignore LPD message because the torrent is private.");
         }
         continue;
       }
@@ -117,16 +118,16 @@ bool LpdReceiveMessageCommand::execute()
     assert(!peerStorage.isNull());
     SharedHandle<Peer> peer = m->getPeer();
     if(peerStorage->addPeer(peer)) {
-      if(logger->debug()) {
-        logger->debug("LPD peer %s:%u local=%d added.",
-                      peer->ipaddr.c_str(), peer->port,
-                      peer->isLocalPeer()?1:0);
+      if(getLogger()->debug()) {
+        getLogger()->debug("LPD peer %s:%u local=%d added.",
+                           peer->ipaddr.c_str(), peer->port,
+                           peer->isLocalPeer()?1:0);
       }
     } else {
-      if(logger->debug()) {
-        logger->debug("LPD peer %s:%u local=%d not added.",
-                      peer->ipaddr.c_str(), peer->port,
-                      peer->isLocalPeer()?1:0);
+      if(getLogger()->debug()) {
+        getLogger()->debug("LPD peer %s:%u local=%d not added.",
+                           peer->ipaddr.c_str(), peer->port,
+                           peer->isLocalPeer()?1:0);
       }
     }
   }

+ 18 - 16
src/PeerAbstractCommand.cc

@@ -81,12 +81,13 @@ PeerAbstractCommand::~PeerAbstractCommand()
 
 bool PeerAbstractCommand::execute()
 {
-  if(logger->debug()) {
-    logger->debug("CUID#%s -"
-                  " socket: read:%d, write:%d, hup:%d, err:%d, noCheck:%d",
-                  util::itos(cuid).c_str(),
-                  _readEvent, _writeEvent, _hupEvent, _errorEvent,
-                  noCheck);
+  if(getLogger()->debug()) {
+    getLogger()->debug("CUID#%s -"
+                       " socket: read:%d, write:%d, hup:%d, err:%d, noCheck:%d",
+                       util::itos(getCuid()).c_str(),
+                       readEventEnabled(), writeEventEnabled(),
+                       hupEventEnabled(), errorEventEnabled(),
+                       noCheck);
   }
   if(exitBeforeExecute()) {
     onAbort();
@@ -94,11 +95,11 @@ bool PeerAbstractCommand::execute()
   }
   try {
     if(noCheck ||
-       (checkSocketIsReadable && _readEvent) ||
-       (checkSocketIsWritable && _writeEvent) ||
-       _hupEvent) {
+       (checkSocketIsReadable && readEventEnabled()) ||
+       (checkSocketIsWritable && writeEventEnabled()) ||
+       hupEventEnabled()) {
       checkPoint = global::wallclock;
-    } else if(_errorEvent) {
+    } else if(errorEventEnabled()) {
       throw DL_ABORT_EX
         (StringFormat(MSG_NETWORK_PROBLEM,
                       socket->getSocketError().c_str()).str());
@@ -108,16 +109,17 @@ bool PeerAbstractCommand::execute()
     }
     return executeInternal();
   } catch(DownloadFailureException& err) {
-    logger->error(EX_DOWNLOAD_ABORTED, err);
+    getLogger()->error(EX_DOWNLOAD_ABORTED, err);
     onAbort();
     onFailure();
     return true;
   } catch(RecoverableException& err) {
-    if(logger->debug()) {
-      logger->debug(MSG_TORRENT_DOWNLOAD_ABORTED, err,
-                    util::itos(cuid).c_str());
-      logger->debug(MSG_PEER_BANNED,
-                    util::itos(cuid).c_str(), peer->ipaddr.c_str(), peer->port);
+    if(getLogger()->debug()) {
+      getLogger()->debug(MSG_TORRENT_DOWNLOAD_ABORTED, err,
+                         util::itos(getCuid()).c_str());
+      getLogger()->debug(MSG_PEER_BANNED,
+                         util::itos(getCuid()).c_str(), peer->ipaddr.c_str(),
+                         peer->port);
     }
     onAbort();
     return prepareForNextPeer(0);

+ 7 - 6
src/PeerInitiateConnectionCommand.cc

@@ -80,16 +80,16 @@ PeerInitiateConnectionCommand::~PeerInitiateConnectionCommand()
 }
 
 bool PeerInitiateConnectionCommand::executeInternal() {
-  if(logger->info()) {
-    logger->info(MSG_CONNECTING_TO_SERVER,
-                 util::itos(cuid).c_str(), peer->ipaddr.c_str(),
-                 peer->port);
+  if(getLogger()->info()) {
+    getLogger()->info(MSG_CONNECTING_TO_SERVER,
+                      util::itos(getCuid()).c_str(), peer->ipaddr.c_str(),
+                      peer->port);
   }
   socket.reset(new SocketCore());
   socket->establishConnection(peer->ipaddr, peer->port);
   if(_mseHandshakeEnabled) {
     InitiatorMSEHandshakeCommand* c =
-      new InitiatorMSEHandshakeCommand(cuid, _requestGroup, peer, e,
+      new InitiatorMSEHandshakeCommand(getCuid(), _requestGroup, peer, e,
                                        _btRuntime, socket);
     c->setPeerStorage(_peerStorage);
     c->setPieceStorage(_pieceStorage);
@@ -97,7 +97,8 @@ bool PeerInitiateConnectionCommand::executeInternal() {
   } else {
     PeerInteractionCommand* command =
       new PeerInteractionCommand
-      (cuid, _requestGroup, peer, e, _btRuntime, _pieceStorage, _peerStorage,
+      (getCuid(), _requestGroup, peer, e, _btRuntime, _pieceStorage,
+       _peerStorage,
        socket, PeerInteractionCommand::INITIATOR_SEND_HANDSHAKE);
     e->addCommand(command);
   }

+ 10 - 9
src/PeerListenCommand.cc

@@ -89,10 +89,11 @@ bool PeerListenCommand::bindPort(uint16_t& port, IntSequence& seq)
       socket->bind(port);
       socket->beginListen();
       socket->setNonBlockingMode();
-      logger->notice("BitTorrent: listening to port %d", port);
+      getLogger()->notice("BitTorrent: listening to port %d", port);
       return true;
     } catch(RecoverableException& ex) {
-      logger->error(MSG_BIND_FAILURE, ex, util::itos(cuid).c_str(), port);
+      getLogger()->error(MSG_BIND_FAILURE, ex,
+                         util::itos(getCuid()).c_str(), port);
       socket->closeConnection();
     }
   }
@@ -128,15 +129,15 @@ bool PeerListenCommand::execute() {
       Command* command =
         new ReceiverMSEHandshakeCommand(cuid, peer, e, peerSocket);
       e->addCommand(command);
-      if(logger->debug()) {
-        logger->debug("Accepted the connection from %s:%u.",
-                      peer->ipaddr.c_str(),
-                      peer->port);
-        logger->debug("Added CUID#%s to receive BitTorrent/MSE handshake.",
-                      util::itos(cuid).c_str());
+      if(getLogger()->debug()) {
+        getLogger()->debug("Accepted the connection from %s:%u.",
+                           peer->ipaddr.c_str(),
+                           peer->port);
+        getLogger()->debug("Added CUID#%s to receive BitTorrent/MSE handshake.",
+                           util::itos(cuid).c_str());
       }
     } catch(RecoverableException& ex) {
-      logger->debug(MSG_ACCEPT_FAILURE, ex, util::itos(cuid).c_str());
+      getLogger()->debug(MSG_ACCEPT_FAILURE, ex, util::itos(getCuid()).c_str());
     }               
   }
   e->addCommand(this);

+ 6 - 6
src/PeerReceiveHandshakeCommand.cc

@@ -130,11 +130,11 @@ bool PeerReceiveHandshakeCommand::executeInternal()
        btRuntime->lessThanMaxPeers()) {
       if(peerStorage->addPeer(peer)) {
 
-        peer->usedBy(cuid);
+        peer->usedBy(getCuid());
         
         PeerInteractionCommand* command =
           new PeerInteractionCommand
-          (cuid,
+          (getCuid(),
            downloadContext->getOwnerRequestGroup(),
            peer,
            e,
@@ -145,10 +145,10 @@ bool PeerReceiveHandshakeCommand::executeInternal()
            PeerInteractionCommand::RECEIVER_WAIT_HANDSHAKE,
            _peerConnection);
         e->addCommand(command);
-        if(logger->debug()) {
-          logger->debug(MSG_INCOMING_PEER_CONNECTION,
-                        util::itos(cuid).c_str(),
-                        util::itos(peer->usedBy()).c_str());
+        if(getLogger()->debug()) {
+          getLogger()->debug(MSG_INCOMING_PEER_CONNECTION,
+                             util::itos(getCuid()).c_str(),
+                             util::itos(peer->usedBy()).c_str());
         }
       }
     }

+ 7 - 5
src/ReceiverMSEHandshakeCommand.cc

@@ -98,13 +98,15 @@ bool ReceiverMSEHandshakeCommand::executeInternal()
       break;
     case MSEHandshake::HANDSHAKE_LEGACY: {
       if(e->getOption()->getAsBool(PREF_BT_REQUIRE_CRYPTO)) {
-        throw DL_ABORT_EX("The legacy BitTorrent handshake is not acceptable by the preference.");
+        throw DL_ABORT_EX
+          ("The legacy BitTorrent handshake is not acceptable by the"
+           " preference.");
       }
       SharedHandle<PeerConnection> peerConnection
-        (new PeerConnection(cuid, socket));
+        (new PeerConnection(getCuid(), socket));
       peerConnection->presetBuffer(_mseHandshake->getBuffer(),
                                    _mseHandshake->getBufferLength());
-      Command* c = new PeerReceiveHandshakeCommand(cuid, peer, e, socket,
+      Command* c = new PeerReceiveHandshakeCommand(getCuid(), peer, e, socket,
                                                    peerConnection);
       e->addCommand(c);
       return true;
@@ -185,7 +187,7 @@ bool ReceiverMSEHandshakeCommand::executeInternal()
 void ReceiverMSEHandshakeCommand::createCommand()
 {
   SharedHandle<PeerConnection> peerConnection
-    (new PeerConnection(cuid, socket));
+    (new PeerConnection(getCuid(), socket));
   if(_mseHandshake->getNegotiatedCryptoType() == MSEHandshake::CRYPTO_ARC4) {
     peerConnection->enableEncryption(_mseHandshake->getEncryptor(),
                                      _mseHandshake->getDecryptor());
@@ -198,7 +200,7 @@ void ReceiverMSEHandshakeCommand::createCommand()
   // as a hint. If this info hash and one in BitTorrent Handshake does not
   // match, then drop connection.
   Command* c =
-    new PeerReceiveHandshakeCommand(cuid, peer, e, socket, peerConnection);
+    new PeerReceiveHandshakeCommand(getCuid(), peer, e, socket, peerConnection);
   e->addCommand(c);
 }
 

+ 1 - 1
src/SeedCheckCommand.cc

@@ -83,7 +83,7 @@ bool SeedCheckCommand::execute() {
   }
   if(checkStarted) {
     if(seedCriteria->evaluate()) {
-      logger->notice(MSG_SEEDING_END);
+      getLogger()->notice(MSG_SEEDING_END);
       _btRuntime->setHalt(true);
     }
   }

+ 2 - 2
src/TimedHaltCommand.cc

@@ -62,9 +62,9 @@ void TimedHaltCommand::preProcess()
 void TimedHaltCommand::process()
 {
   if(!_e->isHaltRequested()) {
-    logger->notice(MSG_TIME_HAS_PASSED, _interval);
+    getLogger()->notice(MSG_TIME_HAS_PASSED, _interval);
     if(_forceHalt) {
-      logger->notice("This is emergency shutdown.");
+      getLogger()->notice("This is emergency shutdown.");
       _e->requestForceHalt();
     } else {
       _e->requestHalt();

+ 17 - 17
src/TrackerWatcherCommand.cc

@@ -96,8 +96,8 @@ bool TrackerWatcherCommand::execute() {
     }
   }
   if(_btAnnounce->noMoreAnnounce()) {
-    if(logger->debug()) {
-      logger->debug("no more announce");
+    if(getLogger()->debug()) {
+      getLogger()->debug("no more announce");
     }
     return true;
   }
@@ -108,13 +108,13 @@ bool TrackerWatcherCommand::execute() {
       try {
         _trackerRequestGroup->createInitialCommand(commands, e);
       } catch(RecoverableException& ex) {
-        logger->error(EX_EXCEPTION_CAUGHT, ex);
+        getLogger()->error(EX_EXCEPTION_CAUGHT, ex);
         std::for_each(commands.begin(), commands.end(), Deleter());
         commands.clear();
       }
       e->addCommand(commands);
-      if(logger->debug()) {
-        logger->debug("added tracker request command");
+      if(getLogger()->debug()) {
+        getLogger()->debug("added tracker request command");
       }
     }
   } else if(_trackerRequestGroup->downloadFinished()){
@@ -125,7 +125,7 @@ bool TrackerWatcherCommand::execute() {
       _btAnnounce->announceSuccess();
       _btAnnounce->resetAnnounce();
     } catch(RecoverableException& ex) {
-      logger->error(EX_EXCEPTION_CAUGHT, ex);      
+      getLogger()->error(EX_EXCEPTION_CAUGHT, ex);      
       _btAnnounce->announceFailure();
       if(_btAnnounce->isAllAnnounceFailed()) {
         _btAnnounce->resetAnnounce();
@@ -180,10 +180,10 @@ void TrackerWatcherCommand::processTrackerResponse
     command->setPeerStorage(_peerStorage);
     command->setPieceStorage(_pieceStorage);
     e->addCommand(command);
-    if(logger->debug()) {
-      logger->debug("CUID#%s - Adding new command CUID#%s",
-                    util::itos(cuid).c_str(),
-                    util::itos(peer->usedBy()).c_str());
+    if(getLogger()->debug()) {
+      getLogger()->debug("CUID#%s - Adding new command CUID#%s",
+                         util::itos(getCuid()).c_str(),
+                         util::itos(peer->usedBy()).c_str());
     }
   }
 }
@@ -222,12 +222,12 @@ TrackerWatcherCommand::createRequestGroup(const std::string& uri)
   uris.push_back(uri);
   SharedHandle<RequestGroup> rg(new RequestGroup(getOption()));
   if(backupTrackerIsAvailable(_requestGroup->getDownloadContext())) {
-    if(logger->debug()) {
-      logger->debug("This is multi-tracker announce.");
+    if(getLogger()->debug()) {
+      getLogger()->debug("This is multi-tracker announce.");
     }
   } else {
-    if(logger->debug()) {
-      logger->debug("This is single-tracker announce.");
+    if(getLogger()->debug()) {
+      getLogger()->debug("This is single-tracker announce.");
     }
   }
   // If backup tracker is available, try 2 times for each tracker
@@ -253,9 +253,9 @@ TrackerWatcherCommand::createRequestGroup(const std::string& uri)
   rg->setFileAllocationEnabled(false);
   rg->setPreLocalFileCheckEnabled(false);
   util::removeMetalinkContentTypes(rg);
-  if(logger->info()) {
-    logger->info("Creating tracker request group GID#%s",
-                 util::itos(rg->getGID()).c_str());
+  if(getLogger()->info()) {
+    getLogger()->info("Creating tracker request group GID#%s",
+                      util::itos(rg->getGID()).c_str());
   }
   return rg;
 }