]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup: Migrate Http1:: Parser child classes to C++11 initialization
authorAmos Jeffries <squid3@treenet.co.nz>
Wed, 15 Mar 2017 15:41:41 +0000 (04:41 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 15 Mar 2017 15:41:41 +0000 (04:41 +1300)
Also, add move semantics to Http1::RequestParser. This apparently will
make the clear() operators faster as they no longer have to data-copy.
At least, one the base Parser class supports move as well.

It also consists a small experiment to see if virtaul destructor alone
allows automatic move constructor to be added by the compiler.

src/http/one/Parser.h
src/http/one/RequestParser.cc
src/http/one/RequestParser.h
src/http/one/ResponseParser.h

index 560ac1f0b13958dbd5e14187663d9133d04b75b3..c467f471a0a80fd2b9c341f0dad4788663930499 100644 (file)
@@ -41,7 +41,6 @@ class Parser : public RefCountable
 public:
     typedef SBuf::size_type size_type;
 
-    Parser() : parseStatusCode(Http::scNone), parsingStage_(HTTP_PARSE_NONE), hackExpectsMime_(false) {}
     virtual ~Parser() {}
 
     /// Set this parser back to a default state.
@@ -104,7 +103,7 @@ public:
      * Http::scOkay indicates no error,
      * other codes represent a parse error.
      */
-    Http::StatusCode parseStatusCode;
+    Http::StatusCode parseStatusCode = Http::scNone;
 
     /// the characters which are to be considered valid whitespace
     /// (WSP / BSP / OWS)
@@ -139,7 +138,7 @@ protected:
     SBuf buf_;
 
     /// what stage the parser is currently up to
-    ParseState parsingStage_;
+    ParseState parsingStage_ = HTTP_PARSE_NONE;
 
     /// what protocol label has been found in the first line (if any)
     AnyP::ProtocolVersion msgProtocol_;
@@ -148,7 +147,7 @@ protected:
     SBuf mimeHeaderBlock_;
 
     /// Whether the invalid HTTP as HTTP/0.9 hack expects a mime header block
-    bool hackExpectsMime_;
+    bool hackExpectsMime_ = false;
 
 private:
     void cleanMimePrefix();
index 44482a913fd25f37a5d43ce9ac50c7e2b93c7ae9..d92c464092893d03554e6d7c49b2407f3c2d97dc 100644 (file)
@@ -20,11 +20,6 @@ ErrorLevel() {
     return Config.onoff.relaxed_header_parser < 0 ? DBG_IMPORTANT : 5;
 }
 
-Http::One::RequestParser::RequestParser(bool preserveParsed) :
-    Parser(),
-    preserveParsed_(preserveParsed)
-{}
-
 Http1::Parser::size_type
 Http::One::RequestParser::firstLineSize() const
 {
index ada020034b75af512c9906c0c4750c48113db2d1..8334d882f19aea2b2f4d90a343f3558957700b95 100644 (file)
@@ -30,7 +30,12 @@ namespace One {
 class RequestParser : public Http1::Parser
 {
 public:
-    explicit RequestParser(bool preserveParsed = false);
+    RequestParser() = default;
+    RequestParser(bool preserveParsed) { preserveParsed_ = preserveParsed; }
+    RequestParser(const RequestParser &) = default;
+    RequestParser &operator =(const RequestParser &) = default;
+    RequestParser(RequestParser &&) = default;
+    RequestParser &operator =(RequestParser &&) = default;
     virtual ~RequestParser() {}
 
     /* Http::One::Parser API */
@@ -72,7 +77,7 @@ private:
     /// all parsed bytes (i.e., input prefix consumed by parse() calls)
     /// meaningless unless preserveParsed_ is true
     SBuf parsed_;
-    bool preserveParsed_; ///< whether to accumulate parsed bytes (in parsed_)
+    bool preserveParsed_ = false; ///< whether to accumulate parsed bytes (in parsed_)
 };
 
 } // namespace One
index 88d56263e7192e0fd85cba7791aef09947b88824..d1ef0897f9ded96020f6e67d12c97fd1e1ebc6cc 100644 (file)
@@ -29,7 +29,6 @@ namespace One {
 class ResponseParser : public Http1::Parser
 {
 public:
-    ResponseParser() : Parser(), completedStatus_(false), statusCode_(Http::scNone) {}
     virtual ~ResponseParser() {}
 
     /* Http::One::Parser API */
@@ -50,10 +49,10 @@ private:
 
     /// Whether we found the status code yet.
     /// We cannot rely on status value because server may send "000".
-    bool completedStatus_;
+    bool completedStatus_ = false;
 
     /// HTTP/1 status-line status code
-    Http::StatusCode statusCode_;
+    Http::StatusCode statusCode_ = Http::scNone;
 
     /// HTTP/1 status-line reason phrase
     SBuf reasonPhrase_;