Unverified Commit ea1ed4c0 authored by Dennis Jenkins's avatar Dennis Jenkins Committed by GitHub

Merge pull request #697 from hyperxor/hide_parserbase_internal_details

Hide ParserBase internal details
parents 1b57112a 72c63be6
...@@ -527,7 +527,7 @@ private: ...@@ -527,7 +527,7 @@ private:
class ParserBase { class ParserBase {
public: public:
ParserBase() : buffer(), cursor(&buffer), allSteps(), currentStep(0) {} ParserBase();
ParserBase(const ParserBase &other) = delete; ParserBase(const ParserBase &other) = delete;
ParserBase(ParserBase &&other) = default; ParserBase(ParserBase &&other) = default;
...@@ -535,18 +535,19 @@ public: ...@@ -535,18 +535,19 @@ public:
bool feed(const char *data, size_t len); bool feed(const char *data, size_t len);
virtual void reset(); virtual void reset();
virtual ~ParserBase() {} virtual ~ParserBase() = default;
State parse(); State parse();
ArrayStreamBuf<char> buffer;
StreamCursor cursor;
protected: protected:
static constexpr size_t StepsCount = 3; static constexpr size_t StepsCount = 3;
std::array<std::unique_ptr<Step>, StepsCount> allSteps; std::array<std::unique_ptr<Step>, StepsCount> allSteps;
size_t currentStep; size_t currentStep = 0;
private:
ArrayStreamBuf<char> buffer;
StreamCursor cursor;
}; };
template <typename Message> class Parser; template <typename Message> class Parser;
......
...@@ -464,6 +464,8 @@ State BodyStep::parseTransferEncoding( ...@@ -464,6 +464,8 @@ State BodyStep::parseTransferEncoding(
return State::Done; return State::Done;
} }
ParserBase::ParserBase() : cursor(&buffer) {}
State ParserBase::parse() { State ParserBase::parse() {
State state; State state;
do { do {
...@@ -675,8 +677,7 @@ void ResponseWriter::setMime(const Mime::MediaType &mime) { ...@@ -675,8 +677,7 @@ void ResponseWriter::setMime(const Mime::MediaType &mime) {
auto ct = response_.headers().tryGet<Header::ContentType>(); auto ct = response_.headers().tryGet<Header::ContentType>();
if (ct) { if (ct) {
ct->setMime(mime); ct->setMime(mime);
} } else {
else {
response_.headers().add(std::make_shared<Header::ContentType>(mime)); response_.headers().add(std::make_shared<Header::ContentType>(mime));
} }
} }
...@@ -711,8 +712,7 @@ Async::Promise<ssize_t> ResponseWriter::sendImpl(Code code, const char *data, ...@@ -711,8 +712,7 @@ Async::Promise<ssize_t> ResponseWriter::sendImpl(Code code, const char *data,
auto contentType = headers().tryGet<Header::ContentType>(); auto contentType = headers().tryGet<Header::ContentType>();
if (contentType) { if (contentType) {
contentType->setMime(mime); contentType->setMime(mime);
} } else {
else {
headers().add(std::make_shared<Header::ContentType>(mime)); headers().add(std::make_shared<Header::ContentType>(mime));
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment