]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire.cc
* some WS fixes
[apt.git] / apt-pkg / acquire.cc
index ae3ba2e01caf46287274c9f4a8149a8b875fd086..70dce4f540a4ac23e047cd1e855cf4840cb01fca 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: acquire.cc,v 1.48 2001/05/22 04:17:18 jgg Exp $
+// $Id: acquire.cc,v 1.50 2004/03/17 05:17:11 mdz Exp $
 /* ######################################################################
 
    Acquire - File Acquiration
 /* ######################################################################
 
    Acquire - File Acquiration
@@ -87,7 +87,11 @@ pkgAcquire::~pkgAcquire()
 void pkgAcquire::Shutdown()
 {
    while (Items.size() != 0)
 void pkgAcquire::Shutdown()
 {
    while (Items.size() != 0)
+   {
+      if (Items[0]->Status == Item::StatFetching)
+         Items[0]->Status = Item::StatError;
       delete Items[0];
       delete Items[0];
+   }
 
    while (Queues != 0)
    {
 
    while (Queues != 0)
    {
@@ -113,13 +117,15 @@ void pkgAcquire::Remove(Item *Itm)
 {
    Dequeue(Itm);
    
 {
    Dequeue(Itm);
    
-   for (ItemIterator I = Items.begin(); I != Items.end(); I++)
+   for (ItemIterator I = Items.begin(); I != Items.end();)
    {
       if (*I == Itm)
       {
         Items.erase(I);
         I = Items.begin();
       }      
    {
       if (*I == Itm)
       {
         Items.erase(I);
         I = Items.begin();
       }      
+      else 
+        I++;
    }
 }
                                                                        /*}}}*/
    }
 }
                                                                        /*}}}*/
@@ -306,7 +312,7 @@ void pkgAcquire::RunFds(fd_set *RSet,fd_set *WSet)
 /* This runs the queues. It manages a select loop for all of the
    Worker tasks. The workers interact with the queues and items to
    manage the actual fetch. */
 /* This runs the queues. It manages a select loop for all of the
    Worker tasks. The workers interact with the queues and items to
    manage the actual fetch. */
-pkgAcquire::RunResult pkgAcquire::Run()
+pkgAcquire::RunResult pkgAcquire::Run(int PulseIntervall)
 {
    Running = true;
    
 {
    Running = true;
    
@@ -321,7 +327,7 @@ pkgAcquire::RunResult pkgAcquire::Run()
    // Run till all things have been acquired
    struct timeval tv;
    tv.tv_sec = 0;
    // Run till all things have been acquired
    struct timeval tv;
    tv.tv_sec = 0;
-   tv.tv_usec = 500000
+   tv.tv_usec = PulseIntervall
    while (ToFetch > 0)
    {
       fd_set RFds;
    while (ToFetch > 0)
    {
       fd_set RFds;
@@ -351,7 +357,7 @@ pkgAcquire::RunResult pkgAcquire::Run()
       // Timeout, notify the log class
       if (Res == 0 || (Log != 0 && Log->Update == true))
       {
       // Timeout, notify the log class
       if (Res == 0 || (Log != 0 && Log->Update == true))
       {
-        tv.tv_usec = 500000;
+        tv.tv_usec = PulseIntervall;
         for (Worker *I = Workers; I != 0; I = I->NextAcquire)
            I->Pulse();
         if (Log != 0 && Log->Pulse(this) == false)
         for (Worker *I = Workers; I != 0; I = I->NextAcquire)
            I->Pulse();
         if (Log != 0 && Log->Pulse(this) == false)
@@ -475,7 +481,7 @@ double pkgAcquire::PartialPresent()
         Total += (*I)->PartialSize;
    return Total;
 }
         Total += (*I)->PartialSize;
    return Total;
 }
-                                                                       /*}}}*/
+
 // Acquire::UriBegin - Start iterator for the uri list                 /*{{{*/
 // ---------------------------------------------------------------------
 /* */
 // Acquire::UriBegin - Start iterator for the uri list                 /*{{{*/
 // ---------------------------------------------------------------------
 /* */