From a4a03b372a7c3aa4e139c801afa5b57d97b29e38 Mon Sep 17 00:00:00 2001 From: Francesco Chemolli Date: Mon, 12 Sep 2011 14:02:55 +0200 Subject: [PATCH] Cache-Control headers refactoring: c++-ize constuctors --- src/HttpHeaderCacheControl.cc | 16 +++++----------- src/http.cc | 2 +- src/mime.cc | 2 +- src/protos.h | 1 - 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/HttpHeaderCacheControl.cc b/src/HttpHeaderCacheControl.cc index 1bcaca4bd1..16bc7f7ec0 100644 --- a/src/HttpHeaderCacheControl.cc +++ b/src/HttpHeaderCacheControl.cc @@ -48,7 +48,7 @@ typedef struct { HttpHeaderFieldStat stat; } HttpHeaderCcFields; -/* order must match that of enum http_hdr_cc_type */ +/* order must match that of enum http_hdr_cc_type. The constraint is verified at initialization time */ static HttpHeaderCcFields CcAttrs[CC_ENUM_END] = { {"public", CC_PUBLIC}, {"private", CC_PRIVATE}, @@ -66,9 +66,11 @@ static HttpHeaderCcFields CcAttrs[CC_ENUM_END] = { {"Other,", CC_OTHER} /* ',' will protect from matches */ }; +/// Map an header name to its type, to expedite parsing typedef std::map HdrCcNameToIdMap_t; static HdrCcNameToIdMap_t HdrCcNameToIdMap; +// iterate over a table of http_header_cc_type structs http_hdr_cc_type &operator++ (http_hdr_cc_type &aHeader) { int tmp = (int)aHeader; @@ -100,22 +102,14 @@ httpHdrCcCleanModule(void) // HdrCcNameToIdMap is self-cleaning } -/* implementation */ - -HttpHdrCc * -httpHdrCcCreate(void) -{ - return new HttpHdrCc(); -} - /* creates an cc object from a 0-terminating string */ HttpHdrCc * httpHdrCcParseCreate(const String * str) { - HttpHdrCc *cc = httpHdrCcCreate(); + HttpHdrCc *cc = new HttpHdrCc(); if (!httpHdrCcParseInit(cc, str)) { - httpHdrCcDestroy(cc); + delete cc; cc = NULL; } diff --git a/src/http.cc b/src/http.cc index 96b90574c8..6acb0e6e37 100644 --- a/src/http.cc +++ b/src/http.cc @@ -1758,7 +1758,7 @@ HttpStateData::httpBuildRequestHeader(HttpRequest * request, HttpHdrCc *cc = hdr_in->getCc(); if (!cc) - cc = httpHdrCcCreate(); + cc = new HttpHdrCc(); #if 0 /* see bug 2330 */ /* Set no-cache if determined needed but not found */ diff --git a/src/mime.cc b/src/mime.cc index a55801022b..aaf5827a18 100644 --- a/src/mime.cc +++ b/src/mime.cc @@ -462,7 +462,7 @@ MimeIcon::created (StoreEntry *newEntry) reply->setHeaders(HTTP_OK, NULL, mimeGetContentType(icon), sb.st_size, sb.st_mtime, -1); - reply->cache_control = httpHdrCcCreate(); + reply->cache_control = new HttpHdrCc(); httpHdrCcSetMaxAge(reply->cache_control, 86400); diff --git a/src/protos.h b/src/protos.h index 858b42acbc..7c1bd6e382 100644 --- a/src/protos.h +++ b/src/protos.h @@ -237,7 +237,6 @@ SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p); /* Http Cache Control Header Field */ SQUIDCEXTERN void httpHdrCcInitModule(void); SQUIDCEXTERN void httpHdrCcCleanModule(void); -SQUIDCEXTERN HttpHdrCc *httpHdrCcCreate(void); SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const String * str); SQUIDCEXTERN void httpHdrCcDestroy(HttpHdrCc * cc); SQUIDCEXTERN HttpHdrCc *httpHdrCcDup(const HttpHdrCc * cc); -- 2.47.2