]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Support newly added libecap::header::visitEach API for iterating header fields.
authorAlex Rousskov <rousskov@measurement-factory.com>
Thu, 16 Dec 2010 15:41:37 +0000 (08:41 -0700)
committerAlex Rousskov <rousskov@measurement-factory.com>
Thu, 16 Dec 2010 15:41:37 +0000 (08:41 -0700)
src/adaptation/ecap/MessageRep.cc
src/adaptation/ecap/MessageRep.h

index f95afcf94ae0959be54235d1cf1c106b6e491231..23a0833e5b95db98e0a69346c1c232e83d437a6c 100644 (file)
@@ -8,6 +8,7 @@
 #include <libecap/common/names.h>
 #include <libecap/common/area.h>
 #include <libecap/common/version.h>
+#include <libecap/common/named_values.h>
 #include "adaptation/ecap/MessageRep.h"
 #include "adaptation/ecap/XactionRep.h"
 #include "adaptation/ecap/Host.h" /* for protocol constants */
@@ -60,6 +61,17 @@ Adaptation::Ecap::HeaderRep::removeAny(const Name &name)
         theHeader.delById(squidId);
 }
 
+void
+Adaptation::Ecap::HeaderRep::visitEach(libecap::NamedValueVisitor &visitor) const
+{
+    HttpHeaderPos pos = HttpHeaderInitPos;
+    while (HttpHeaderEntry *e = theHeader.getEntry(&pos)) {
+        const Name name(e->name.termedBuf()); // optimize: find std Names
+        name.assignHostId(e->id);
+        visitor.visit(name, Value(e->value.rawBuf(), e->value.size()));
+    }
+}
+
 libecap::Area
 Adaptation::Ecap::HeaderRep::image() const
 {
index 6b753d7c9691c76a554b6a72dbf79341b0105274..b5a7d425ea2b0695dbf0b48356aebe2cef8492a0 100644 (file)
@@ -41,6 +41,8 @@ public:
     virtual void add(const Name &name, const Value &value);
     virtual void removeAny(const Name &name);
 
+    virtual void visitEach(libecap::NamedValueVisitor &visitor) const;
+
     virtual Area image() const;
     virtual void parse(const Area &buf); // throws on failures