diff options
Diffstat (limited to 'http_response.h')
-rw-r--r-- | http_response.h | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/http_response.h b/http_response.h index eff1d0f..1a4cbd3 100644 --- a/http_response.h +++ b/http_response.h @@ -5,8 +5,13 @@ namespace crow { + template <typename T> + class Connection; struct response { + template <typename T> + friend class crow::Connection; + std::string body; json::wvalue json_value; int code{200}; @@ -24,22 +29,42 @@ namespace crow *this = std::move(r); } + response& operator = (const response& r) = delete; + response& operator = (response&& r) { body = std::move(r.body); json_value = std::move(r.json_value); code = r.code; headers = std::move(r.headers); + completed_ = r.completed_; return *this; } - void send(const std::string& body_part) + void clear() + { + body.clear(); + json_value.clear(); + code = 200; + headers.clear(); + completed_ = false; + } + + void write(const std::string& body_part) { body += body_part; } void end() { + if (!completed_) + { + completed_ = true; + if (complete_request_handler_) + { + complete_request_handler_(); + } + } } void end(const std::string& body_part) @@ -47,5 +72,10 @@ namespace crow body += body_part; end(); } + + void* p; + private: + bool completed_{}; + std::function<void()> complete_request_handler_; }; } |