Exemple #1
0
// delete expired tiles
void datacloud::deleteexpiredtiles()
   {
   double time;

   tilecacheelem *tile,*next;

   if (EXPIRE==0.0) return;

   time=minitime();

   tile=TILECACHE;

   // check all tiles
   while (tile!=NULL)
      {
      next=tile->next;

      if (tile->isavailable && tile->refcount==0)
         {
         double idle=time-tile->access;
         if (idle>60*EXPIRE) deletetile(tile);
         }

      tile=next;
      }
   }
Exemple #2
0
// delete delayed tiles
void datacloud::deletedelayedtiles()
   {
   tilecacheelem *tile,*next;

   if (MAXDELAY==0.0) return;

   tile=TILECACHE;

   // check all tiles
   while (tile!=NULL)
      {
      next=tile->next;

      if (tile->isdelayed && tile->refcount==0) deletetile(tile);

      tile=next;
      }
   }
Exemple #3
0
// shrink cache to maximum allowed size
void datacloud::shrinkcache(double maxsize)
   {
   double totalsize;

   tilecacheelem *tile,*next;

   if (maxsize==0.0) return;

   totalsize=0.0;

   tile=TILECACHE;

   // sum up all tiles
   while (tile!=NULL)
      {
      if (tile->isavailable) totalsize+=tile->tile->bytes;

      tile=tile->next;
      }

   tile=TILECACHE;

   // delete old tiles
   while (tile!=NULL && totalsize>maxsize)
      {
      next=tile->next;

      if (tile->isavailable && tile->refcount==0)
         {
         totalsize-=tile->tile->bytes;
         deletetile(tile);
         }

      tile=next;
      }
   }