Bläddra i källkod

* mirror method:
- when downloading data, show the mirror being used

Michael Vogt 15 år sedan
förälder
incheckning
196fd13629
4 ändrade filer med 29 tillägg och 5 borttagningar
  1. 12 5
      apt-pkg/acquire-method.cc
  2. 11 0
      apt-pkg/acquire-worker.cc
  3. 2 0
      debian/changelog
  4. 4 0
      methods/mirror.cc

+ 12 - 5
apt-pkg/acquire-method.cc

@@ -149,6 +149,8 @@ void pkgAcqMethod::URIStart(FetchResult &Res)
    if (Res.ResumePoint != 0)
       End += snprintf(End,sizeof(S)-4 - (End - S),"Resume-Point: %lu\n",
 		      Res.ResumePoint);
+   if (UsedMirror.empty() == false)
+      End += snprintf(End,sizeof(S)-50 - (End - S),"UsedMirror: %s\n",UsedMirror.c_str());
       
    strcat(End,"\n");
    if (write(STDOUT_FILENO,S,strlen(S)) != (signed)strlen(S))
@@ -418,9 +420,11 @@ void pkgAcqMethod::Log(const char *Format,...)
 
    // sprintf the description
    char S[1024];
-   unsigned int Len = snprintf(S,sizeof(S)-4,"101 Log\nURI: %s\n"
-			       "Message: ",CurrentURI.c_str());
-
+   unsigned int Len = snprintf(S,sizeof(S)-4,"101 Log\n"
+                               "URI: %s\n"
+                               "UsedMirror: %s\n"
+			       "Message: ", UsedMirror.c_str(),
+                               CurrentURI.c_str());
    vsnprintf(S+Len,sizeof(S)-4-Len,Format,args);
    strcat(S,"\n\n");
    
@@ -442,8 +446,11 @@ void pkgAcqMethod::Status(const char *Format,...)
 
    // sprintf the description
    char S[1024];
-   unsigned int Len = snprintf(S,sizeof(S)-4,"102 Status\nURI: %s\n"
-			       "Message: ",CurrentURI.c_str());
+   unsigned int Len = snprintf(S,sizeof(S)-4,"102 Status\n"
+                               "URI: %s\n"
+                               "UsedMirror: %s\n"
+			       "Message: ",UsedMirror.c_str(),
+                               CurrentURI.c_str());
 
    vsnprintf(S+Len,sizeof(S)-4-Len,Format,args);
    strcat(S,"\n\n");

+ 11 - 0
apt-pkg/acquire-worker.cc

@@ -199,6 +199,17 @@ bool pkgAcquire::Worker::RunMessages()
       pkgAcquire::Queue::QItem *Itm = 0;
       if (URI.empty() == false)
 	 Itm = OwnerQ->FindItem(URI,this);
+
+      // update used mirror
+      string UsedMirror = LookupTag(Message,"UsedMirror", "");
+      if (!UsedMirror.empty() && 
+          Itm && 
+          Itm->Description.find(" ") != string::npos) 
+      {
+         Itm->Description.replace(0, Itm->Description.find(" "), UsedMirror);
+         // FIXME: will we need this as well?
+         //Itm->ShortDesc = UsedMirror;
+      }
       
       // Determine the message number and dispatch
       switch (Number)

+ 2 - 0
debian/changelog

@@ -11,6 +11,8 @@ apt (0.8.13) unstable; urgency=low
   * apt-pkg/acquire-item.cc:
     - mark pkgAcqIndexTrans as Index-File to avoid asking the
       user to insert the CD on each apt-get update
+  * mirror method:
+    - when downloading data, show the mirror being used
 
  -- Michael Vogt <michael.vogt@ubuntu.com>  Thu, 10 Mar 2011 15:56:54 +0100
 

+ 4 - 0
methods/mirror.cc

@@ -186,6 +186,10 @@ bool MirrorMethod::TryNextMirror()
       Queue->Uri.replace(0, mirror->length(), *nextmirror);
       if (Debug)
 	 clog << "TryNextMirror: " << Queue->Uri << endl;
+
+      // inform parent
+      UsedMirror = *nextmirror;
+      Log("Switching mirror");
       return true;
    }