From: Amos Jeffries Date: Wed, 15 Mar 2017 15:41:41 +0000 (+1300) Subject: Cleanup: Migrate Http1:: Parser child classes to C++11 initialization X-Git-Tag: M-staged-PR71~221 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7a010fb2cfde06b657628ec17b6fdd962d6445cc;p=thirdparty%2Fsquid.git Cleanup: Migrate Http1:: Parser child classes to C++11 initialization 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. --- diff --git a/src/http/one/Parser.h b/src/http/one/Parser.h index 560ac1f0b1..c467f471a0 100644 --- a/src/http/one/Parser.h +++ b/src/http/one/Parser.h @@ -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(); diff --git a/src/http/one/RequestParser.cc b/src/http/one/RequestParser.cc index 44482a913f..d92c464092 100644 --- a/src/http/one/RequestParser.cc +++ b/src/http/one/RequestParser.cc @@ -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 { diff --git a/src/http/one/RequestParser.h b/src/http/one/RequestParser.h index ada020034b..8334d882f1 100644 --- a/src/http/one/RequestParser.h +++ b/src/http/one/RequestParser.h @@ -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 diff --git a/src/http/one/ResponseParser.h b/src/http/one/ResponseParser.h index 88d56263e7..d1ef0897f9 100644 --- a/src/http/one/ResponseParser.h +++ b/src/http/one/ResponseParser.h @@ -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_;