Optimized Request and Response classes.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include "ehs/Str.h"
|
||||
#include "ehs/json/Json.h"
|
||||
#include "Socket.h"
|
||||
#include "HeaderVar.h"
|
||||
|
||||
namespace ehs
|
||||
{
|
||||
@@ -14,7 +15,7 @@ namespace ehs
|
||||
UInt_32 code;
|
||||
Str_8 server;
|
||||
ContentType cType;
|
||||
Vector<Str_8> header;
|
||||
Vector<HeaderVar> header;
|
||||
Str_8 body;
|
||||
|
||||
public:
|
||||
@@ -24,29 +25,38 @@ namespace ehs
|
||||
/// Initializes this response with a given code and server identifier.
|
||||
/// @param [in] code The code to give.
|
||||
/// @param [in] server The server identifier.
|
||||
Response(const UInt_32 code, const Str_8& server);
|
||||
Response(const UInt_32 &code, Str_8 server);
|
||||
|
||||
/// Initializes this response with the raw response data.
|
||||
/// @param [in] data The C-style string of the response.
|
||||
/// @param [in] size The size of the given C-style string.
|
||||
Response(const char* data, const UInt_64 size);
|
||||
Response(const char *data, const UInt_64 &size);
|
||||
|
||||
/// Initializes this response with the raw response data.
|
||||
/// @param [in] data The string of the response.
|
||||
Response(const Str_8& data);
|
||||
Response(const Str_8 &data);
|
||||
|
||||
/// Moves members from another object of the same type.
|
||||
/// @param [in] other The object to move from.
|
||||
Response(Response &&other) noexcept;
|
||||
|
||||
/// Copies members from another object of the same type.
|
||||
/// @param [in] res The object to copy from.
|
||||
Response(const Response& res) = default;
|
||||
/// @param [in] other The object to copy from.
|
||||
Response(const Response &other);
|
||||
|
||||
/// Moves members from another object of the same type.
|
||||
/// @param [in] other The object to move from.
|
||||
/// @returns The response that has been assigned to.
|
||||
Response &operator=(Response &&other) noexcept;
|
||||
|
||||
/// Copies members from another object of the same type.
|
||||
/// @param [in] res The object to copy from.
|
||||
/// @returns The response that has been assigned to.
|
||||
Response& operator=(const Response& res);
|
||||
Response& operator=(const Response &other);
|
||||
|
||||
/// Sets the response code to send to the endpoint.
|
||||
/// @param [in] code The code for success, error or info.
|
||||
void SetCode(const UInt_32 code);
|
||||
void SetCode(const UInt_32 &code);
|
||||
|
||||
/// Retrieves the response code.
|
||||
/// @returns The result.
|
||||
@@ -54,7 +64,7 @@ namespace ehs
|
||||
|
||||
/// Sets the server identifier.
|
||||
/// @param [in] server The server identifier to use.
|
||||
void SetServer(const Str_8& server);
|
||||
void SetServer(Str_8 server);
|
||||
|
||||
/// Retrieves the server identifier.
|
||||
/// @returns The result.
|
||||
@@ -62,25 +72,60 @@ namespace ehs
|
||||
|
||||
/// Sets the content type for the body.
|
||||
/// @param [in] cType The content type to use.
|
||||
void SetContentType(const ContentType cType);
|
||||
void SetContentType(const ContentType &cType);
|
||||
|
||||
/// Retrieves the content type for the body.
|
||||
/// @returns The result.
|
||||
ContentType GetContentType() const;
|
||||
|
||||
/// Adds a header variable.
|
||||
/// @param [in] var The variable identifier.
|
||||
/// @param [in] value The value of the variable.
|
||||
void AddToHeader(const Str_8& var, const Str_8& value);
|
||||
/// Checks whether a header variable exists using the id.
|
||||
/// @param [in] id The variable id to look for.
|
||||
/// @returns True if the variable exists. False otherwise.
|
||||
bool HasHeaderVar(const UInt_64 &id) const;
|
||||
|
||||
/// Retrieves a header variable.
|
||||
/// @param [in] var The variable identifier to look for.
|
||||
/// @returns The value of the header variable. Empty if it was not found.
|
||||
Str_8 GetHeader(const Str_8& var) const;
|
||||
/// Checks whether a header variable exists using the name.
|
||||
/// @param [in] name The variable name to look for.
|
||||
/// @returns True if the variable exists. False otherwise.
|
||||
bool HasHeaderVar(const Str_8 &name) const;
|
||||
|
||||
/// Adds a header variable.
|
||||
/// @param [in] var The variable to add to the header.
|
||||
/// @returns False if the given variable name already exists. True otherwise.
|
||||
bool AddHeaderVar(HeaderVar var);
|
||||
|
||||
/// Removes a header variable using the id.
|
||||
/// @param [in] id The variable id to look for.
|
||||
/// @returns True if the variable was found. False otherwise.
|
||||
bool RemoveHeaderVar(const UInt_64 &id);
|
||||
|
||||
/// Removes a header variable using the name.
|
||||
/// @param [in] name The variable name to look for.
|
||||
/// @returns True if the variable was found. False otherwise.
|
||||
bool RemoveHeaderVar(const Str_8 &name);
|
||||
|
||||
/// Retrieves a header variable using the id.
|
||||
/// @param [in] id The variable id to look for.
|
||||
/// @returns The variable object if found. Nullptr otherwise.
|
||||
HeaderVar *GetHeaderVar(const UInt_64 &id) const;
|
||||
|
||||
/// Retrieves a header variable using the name.
|
||||
/// @param [in] name The variable name to look for.
|
||||
/// @returns The variable object if found. Nullptr otherwise.
|
||||
HeaderVar *GetHeaderVar(const Str_8& name) const;
|
||||
|
||||
/// Retrieves a header variable value using the id.
|
||||
/// @param [in] id The variable id to look for.
|
||||
/// @returns The variable's value if found. Empty otherwise.
|
||||
Str_8 GetHeaderValue(const UInt_64 &id) const;
|
||||
|
||||
/// Retrieves a header variable value using the name.
|
||||
/// @param [in] name The variable name to look for.
|
||||
/// @returns The variable's value if found. Empty otherwise.
|
||||
Str_8 GetHeaderValue(const Str_8& name) const;
|
||||
|
||||
/// Retrieves all the header variables in a vector object.
|
||||
/// @returns The result.
|
||||
Vector<Str_8> GetHeader() const;
|
||||
Vector<HeaderVar> GetHeader() const;
|
||||
|
||||
/// Adds a body variable.
|
||||
/// @param [in] var The variable identifier.
|
||||
@@ -115,13 +160,13 @@ namespace ehs
|
||||
bool IsValid() const;
|
||||
|
||||
private:
|
||||
static Str_8 CodeToStr(const UInt_32 code);
|
||||
static Str_8 CodeToStr(const UInt_32 &code);
|
||||
|
||||
static Str_8 ContentTypeToStr(const ContentType cType);
|
||||
static Str_8 ContentTypeToStr(const ContentType &cType);
|
||||
|
||||
static ContentType StrToContentType(const Str_8& value);
|
||||
static ContentType StrToContentType(const Str_8 &value);
|
||||
|
||||
void ReadData(const Str_8& data);
|
||||
void ReadData(const Str_8 &data);
|
||||
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user