From: Alex Rousskov Date: Thu, 16 Dec 2010 15:41:37 +0000 (-0700) Subject: Support newly added libecap::header::visitEach API for iterating header fields. X-Git-Tag: take1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12a410c344dd1df960944dfbe6f3b83a9cffa725;p=thirdparty%2Fsquid.git Support newly added libecap::header::visitEach API for iterating header fields. --- diff --git a/src/adaptation/ecap/MessageRep.cc b/src/adaptation/ecap/MessageRep.cc index f95afcf94a..23a0833e5b 100644 --- a/src/adaptation/ecap/MessageRep.cc +++ b/src/adaptation/ecap/MessageRep.cc @@ -8,6 +8,7 @@ #include #include #include +#include #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 { diff --git a/src/adaptation/ecap/MessageRep.h b/src/adaptation/ecap/MessageRep.h index 6b753d7c96..b5a7d425ea 100644 --- a/src/adaptation/ecap/MessageRep.h +++ b/src/adaptation/ecap/MessageRep.h @@ -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