aboutsummaryrefslogtreecommitdiffstats
path: root/http_response.h
diff options
context:
space:
mode:
Diffstat (limited to 'http_response.h')
-rw-r--r--http_response.h32
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_;
};
}