]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Updated DelayTagged and DelayUser from SplayNode to Splay API
authorFrancesco Chemolli <kinkie@squid-cache.org>
Fri, 2 Jan 2015 17:13:46 +0000 (18:13 +0100)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Fri, 2 Jan 2015 17:13:46 +0000 (18:13 +0100)
src/DelayTagged.cc
src/DelayUser.cc

index 4d01d1c48a34d027b54a3156d8e5f2c450628157..6f695c4315ff9440135e8a29f4e885d18ade0aa9 100644 (file)
@@ -40,7 +40,7 @@ static Splay<DelayTaggedBucket::Pointer>::SPLAYFREE DelayTaggedFree;
 DelayTagged::~DelayTagged()
 {
     DelayPools::deregisterForUpdates (this);
-    buckets->destroy (DelayTaggedFree);
+    buckets.destroy(DelayTaggedFree);
 }
 
 static Splay<DelayTaggedBucket::Pointer>::SPLAYCMP DelayTaggedCmp;
@@ -58,7 +58,7 @@ DelayTaggedFree(DelayTaggedBucket::Pointer &)
 
 struct DelayTaggedStatsVisitor {
     StoreEntry *sentry;
-    explicit DelayTaggedStatsVisitor(StoreEntry *se) sentry(se) {}
+    explicit DelayTaggedStatsVisitor(StoreEntry *se): sentry(se) {}
     void operator() (DelayTaggedBucket::Pointer const &current) {
         current->stats(sentry);
     }
@@ -105,11 +105,20 @@ DelayTaggedUpdateWalkee(DelayTaggedBucket::Pointer const &current, void *state)
     const_cast<DelayTaggedBucket *>(current.getRaw())->theBucket.update(t->spec, t->incr);
 }
 
+struct DelayTaggedUpdateVisitor {
+    DelayTaggedUpdater *updater;
+    explicit DelayTaggedUpdateVisitor(DelayTaggedUpdater *u) : updater(u) {}
+    void operator() (DelayTaggedBucket::Pointer const &current) {
+        const_cast<DelayTaggedBucket *>(current.getRaw())->theBucket.update(updater->spec, updater->incr);
+    }
+};
+
 void
 DelayTagged::update(int incr)
 {
     DelayTaggedUpdater updater(spec, incr);
-    buckets.head->walk (DelayTaggedUpdateWalkee, &updater);
+    DelayTaggedUpdateVisitor visitor(&updater);
+    buckets.visit(visitor);
     kickReads();
 }
 
@@ -185,7 +194,7 @@ DelayTagged::Id::Id(DelayTagged::Pointer aDelayTagged, String &aTag) : theTagged
     }
 
     theBucket->theBucket.init(theTagged->spec);
-    theTagged->buckets.head = theTagged->buckets.head->insert (theBucket, DelayTaggedCmp);
+    theTagged->buckets.insert (theBucket, DelayTaggedCmp);
 }
 
 DelayTagged::Id::~Id()
index 5e62bffd1bfd15f1f0480d4f4a7e166887b0e465..5cccae9deb10b90cab30a37e38b6a13d686a540b 100644 (file)
@@ -42,7 +42,7 @@ static Splay<DelayUserBucket::Pointer>::SPLAYFREE DelayUserFree;
 DelayUser::~DelayUser()
 {
     DelayPools::deregisterForUpdates (this);
-    buckets.head->destroy (DelayUserFree);
+    buckets.destroy(DelayUserFree);
 }
 
 static Splay<DelayUserBucket::Pointer>::SPLAYCMP DelayUserCmp;
@@ -68,6 +68,14 @@ DelayUserStatsWalkee(DelayUserBucket::Pointer const &current, void *state)
     current->stats ((StoreEntry *)state);
 }
 
+struct DelayUserStatsVisitor {
+    StoreEntry *se;
+    explicit DelayUserStatsVisitor(StoreEntry *s) : se(s) {}
+    void operator() (DelayUserBucket::Pointer const &current) {
+        current->stats(se);
+    }
+};
+
 void
 DelayUser::stats(StoreEntry * sentry)
 {
@@ -78,12 +86,13 @@ DelayUser::stats(StoreEntry * sentry)
 
     storeAppendPrintf(sentry, "\t\tCurrent: ");
 
-    if (!buckets.head) {
+    if (buckets.empty()) {
         storeAppendPrintf (sentry, "Not used yet.\n\n");
         return;
     }
 
-    buckets.head->walk(DelayUserStatsWalkee, sentry);
+    DelayUserStatsVisitor visitor(sentry);
+    buckets.visit(visitor);
     storeAppendPrintf(sentry, "\n\n");
 }
 
@@ -108,11 +117,20 @@ DelayUserUpdateWalkee(DelayUserBucket::Pointer const &current, void *state)
     const_cast<DelayUserBucket *>(current.getRaw())->theBucket.update(t->spec, t->incr);
 }
 
+struct DelayUserUpdateVisitor {
+    DelayUserUpdater *t;
+    DelayUserUpdateVisitor(DelayUserUpdater *updater) : t(updater) {}
+    void operator() (DelayUserBucket::Pointer const &current) {
+        const_cast<DelayUserBucket *>(current.getRaw())->theBucket.update(t->spec, t->incr);
+    }
+};
+
 void
 DelayUser::update(int incr)
 {
     DelayUserUpdater updater(spec, incr);
-    buckets.head->walk (DelayUserUpdateWalkee, &updater);
+    DelayUserUpdateVisitor visitor(&updater);
+    buckets.visit(visitor);
 }
 
 void
@@ -188,7 +206,7 @@ DelayUser::Id::Id(DelayUser::Pointer aDelayUser, Auth::User::Pointer aUser) : th
     }
 
     theBucket->theBucket.init(theUser->spec);
-    theUser->buckets.head = theUser->buckets.head->insert (theBucket, DelayUserCmp);
+    theUser->buckets.insert (theBucket, DelayUserCmp);
 }
 
 DelayUser::Id::~Id()