2929#include " details/event_tuple.hpp"
3030#include " webserver.hpp"
3131#include " http_response.hpp"
32+ #include " http_response_builder.hpp"
3233
3334using namespace std ;
3435
3536namespace httpserver
3637{
3738
39+ http_response::http_response (const http_response_builder& builder):
40+ content (builder._content_hook),
41+ response_code (builder._response_code),
42+ autodelete (builder._autodelete),
43+ realm (builder._realm),
44+ opaque (builder._opaque),
45+ reload_nonce (builder._reload_nonce),
46+ fp (-1 ),
47+ filename (builder._content_hook),
48+ headers (builder._headers),
49+ footers (builder._footers),
50+ cookies (builder._cookies),
51+ topics (builder._topics),
52+ keepalive_secs (builder._keepalive_secs),
53+ keepalive_msg (builder._keepalive_msg),
54+ send_topic (builder._send_topic),
55+ underlying_connection (0x0 ),
56+ ca (0x0 ),
57+ closure_data (0x0 ),
58+ ce (builder._ce),
59+ cycle_callback (builder._cycle_callback),
60+ get_raw_response (this , builder._get_raw_response),
61+ decorate_response (this , builder._decorate_response),
62+ enqueue_response (this , builder._enqueue_response),
63+ completed (false ),
64+ ws (0x0 ),
65+ connection_id (0x0 )
66+ {
67+ }
68+
3869http_response::~http_response ()
3970{
4071 if (ce != 0x0 )
@@ -60,27 +91,6 @@ size_t http_response::get_cookies(std::map<std::string, std::string, header_comp
6091}
6192
6293// RESPONSE
63- shoutCAST_response::shoutCAST_response
64- (
65- const std::string& content,
66- int response_code,
67- const std::string& content_type,
68- bool autodelete
69- ):
70- http_response (
71- this ,
72- content,
73- response_code | http_utils::shoutcast_response,
74- content_type,autodelete
75- )
76- {
77- }
78-
79- ssize_t deferred_response::cycle_callback (const std::string& buf)
80- {
81- return -1 ;
82- }
83-
8494void http_response::get_raw_response_str (MHD_Response** response, webserver* ws)
8595{
8696 size_t size = &(*content.end ()) - &(*content.begin ());
@@ -197,9 +207,9 @@ namespace details
197207
198208ssize_t cb (void * cls, uint64_t pos, char * buf, size_t max)
199209{
200- int val = static_cast <deferred_response *>(cls)->cycle_callback (buf);
210+ int val = static_cast <http_response *>(cls)->cycle_callback (buf);
201211 if (val == -1 )
202- static_cast <deferred_response *>(cls)->completed = true ;
212+ static_cast <http_response *>(cls)->completed = true ;
203213 return val;
204214}
205215
@@ -240,7 +250,7 @@ void http_response::get_raw_response_lp_receive(
240250 )->client_addr ;
241251
242252 *response = MHD_create_response_from_callback (MHD_SIZE_UNKNOWN, 80 ,
243- &long_polling_receive_response ::data_generator, (void *) this , NULL );
253+ &http_response ::data_generator, (void *) this , NULL );
244254
245255 ws->register_to_topics (
246256 topics,
@@ -250,15 +260,14 @@ void http_response::get_raw_response_lp_receive(
250260 );
251261}
252262
253- ssize_t long_polling_receive_response ::data_generator (
263+ ssize_t http_response ::data_generator (
254264 void * cls,
255265 uint64_t pos,
256266 char * buf,
257267 size_t max
258268)
259269{
260- long_polling_receive_response* _this =
261- static_cast <long_polling_receive_response*>(cls);
270+ http_response* _this = static_cast <http_response*>(cls);
262271
263272 if (_this->ws ->pop_signaled (_this->connection_id ))
264273 {
0 commit comments