Skip to content

Commit

Permalink
perf(RequestParser): optimization (#204)
Browse files Browse the repository at this point in the history
* perf(Utils): optimize toLowerString

* perf(Request): use const reference

* perf: remove unnecessary temporary objects

* refactor(RequestParser): add const qualifier

* perf(RequestParser): optimize functions

* wip: perf

* fix(RequestParser): fix stupid logic
  • Loading branch information
Clearsu authored Jul 31, 2023
1 parent 0652c85 commit 9114019
Show file tree
Hide file tree
Showing 8 changed files with 219 additions and 141 deletions.
2 changes: 1 addition & 1 deletion srcs/clients/client/src/Client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ void Client::parseRequest(short port) {
}
if (_request.isExpect100()) {
_state = EXPECT_CONTINUE;
std::string temp = std::string(toLowerString(_recvBuff));
std::string temp = toLowerString(_recvBuff);
size_t pos = temp.find("expect");
size_t end = temp.find("\r\n", pos);
if (pos == std::string::npos) return;
Expand Down
5 changes: 3 additions & 2 deletions srcs/clients/request/include/IRequest.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ class IRequest {
virtual std::map<std::string, std::string> &getHeaderFields(void) = 0;
virtual IServerConfig *getMatchedServer(void) const = 0;

virtual const std::string getHeaderField(std::string key) const = 0;
virtual const std::string &getHeaderField(const std::string &key) const = 0;
virtual void clear(void) = 0;
virtual void setHeaderField(std::string key, std::string value) = 0;
virtual void setHeaderField(const std::string &key,
const std::string &value) = 0;

virtual const bool &isParsed(void) const = 0;
virtual const bool &isCgi(void) const = 0;
Expand Down
4 changes: 2 additions & 2 deletions srcs/clients/request/include/Request.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ class Request : public IRequest {
const std::string &getCgiPath(void) const;
const std::string &getBody(void) const;
const std::string &getQueryString(void) const;
const std::string getHeaderField(std::string key) const;
void setHeaderField(std::string key, std::string value);
const std::string &getHeaderField(const std::string &key) const;
void setHeaderField(const std::string &key, const std::string &value);

size_t getContentLength(void) const;
const std::map<std::string, std::string> &getQueryStringElements(void) const;
Expand Down
7 changes: 4 additions & 3 deletions srcs/clients/request/request_parser/include/RequestParser.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,12 @@ class RequestParser : public IRequestParser {
void setConnectionClose(RequestDts& dts);
void validateDuplicateInvalidHeaders(std::string key, RequestDts& dts);
void validateContentLengthHeader(RequestDts& dts);
void validateHeaderKey(std::string& key, RequestDts& dts);
void validateHeaderKey(const std::string& key, RequestDts& dts);
void validateHostHeader(short port, RequestDts& dts);
void ValidateContentEncoding(RequestDts& dts);
void hostHeaderNameCheck(std::string hostName, RequestDts& dts);
void hostHeaderportCheck(short port, std::string portName, RequestDts& dts);
void hostHeaderNameCheck(const std::string& hostName, RequestDts& dts);
void hostHeaderportCheck(short port, const std::string& portName,
RequestDts& dts);

void removeNotAscii(std::string& field);

Expand Down
Loading

0 comments on commit 9114019

Please sign in to comment.