]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/adaptation/AccessRule.cc
SourceFormat Enforcement
[thirdparty/squid.git] / src / adaptation / AccessRule.cc
index 2a2a27130cfcdb605f24e32b5bfe5d548812a07f..03b9804bd191d21461d1c3e8708c81204ecce083 100644 (file)
@@ -1,16 +1,15 @@
 #include "squid.h"
 #include "structs.h"
-
 #include "ConfigParser.h"
-#include "ACL.h"
+#include "acl/Gadgets.h"
 #include "adaptation/AccessRule.h"
 #include "adaptation/Service.h"
 #include "adaptation/ServiceGroups.h"
-
+#include "Debug.h"
 
 int Adaptation::AccessRule::LastId = 0;
 
-Adaptation::AccessRule::AccessRule(): id(++LastId), acl(NULL)
+Adaptation::AccessRule::AccessRule(const String &aGroupId): id(++LastId), groupId(aGroupId), acl(NULL)
 {
 }
 
@@ -22,36 +21,34 @@ Adaptation::AccessRule::~AccessRule()
 void
 Adaptation::AccessRule::parse(ConfigParser &parser)
 {
-    ConfigParser::ParseString(&groupId);
     aclParseAccessLine(parser, &acl);
 }
 
 void
 Adaptation::AccessRule::finalize()
 {
-    if (!group()) { // no explicit group 
+    if (!group()) { // no explicit group
         debugs(93,7, HERE << "no service group: " << groupId);
         // try to add a one-service group
         if (FindService(groupId) != NULL) {
-            ServiceGroup *g = new SingleService(groupId);
+            ServiceGroupPointer g = new SingleService(groupId);
             g->finalize(); // explicit groups were finalized before rules
             AllGroups().push_back(g);
         }
     }
 
     if (!group()) {
-        debugs(93,0, "ERROR: Unknown adaptation service or group name: '" <<
-            groupId << "'"); // TODO: fail on failures
+        debugs(93, DBG_CRITICAL, "ERROR: Unknown adaptation service or group name: '" <<
+               groupId << "'"); // TODO: fail on failures
     }
 }
 
-Adaptation::ServiceGroup *
+Adaptation::ServiceGroupPointer
 Adaptation::AccessRule::group()
 {
     return FindGroup(groupId);
 }
 
-
 Adaptation::AccessRules &
 Adaptation::AllRules()
 {
@@ -71,3 +68,15 @@ Adaptation::FindRule(const AccessRule::Id &id)
 
     return NULL;
 }
+
+Adaptation::AccessRule *
+Adaptation::FindRuleByGroupId(const String &groupId)
+{
+    typedef AccessRules::iterator ARI;
+    for (ARI i = AllRules().begin(); i != AllRules().end(); ++i) {
+        if ((*i)->groupId == groupId)
+            return *i;
+    }
+
+    return NULL;
+}