@@ -33,7 +33,7 @@ namespace httpserver
3333
3434namespace details
3535{
36- MHD_Response* get_raw_response_helper (void * cls, bool completed, ssize_t (*cb)(void *, uint64_t , char *, size_t ));
36+ MHD_Response* get_raw_response_helper (void * cls, ssize_t (*cb)(void *, uint64_t , char *, size_t ));
3737}
3838
3939template <class T >
@@ -49,24 +49,21 @@ class deferred_response : public string_response
4949 ):
5050 string_response(content, response_code, content_type),
5151 cycle_callback(cycle_callback),
52- closure_data(closure_data),
53- completed(false )
52+ closure_data(closure_data)
5453 {
5554 }
5655
5756 deferred_response (const deferred_response& other):
5857 string_response(other),
5958 cycle_callback(other.cycle_callback),
60- closure_data(other.closure_data),
61- completed(other.completed)
59+ closure_data(other.closure_data)
6260 {
6361 }
6462
6563 deferred_response (deferred_response&& other) noexcept :
6664 string_response(std::move(other)),
6765 cycle_callback(std::move(other.cycle_callback)),
68- closure_data(std::move(other.closure_data)),
69- completed(other.completed)
66+ closure_data(std::move(other.closure_data))
7067 {
7168 }
7269
@@ -77,7 +74,6 @@ class deferred_response : public string_response
7774 (string_response&) (*this ) = b;
7875 this ->cycle_callback = b.cycle_callback ;
7976 this ->closure_data = b.closure_data ;
80- this ->completed = b.completed ;
8177
8278 return *this ;
8379 }
@@ -89,7 +85,6 @@ class deferred_response : public string_response
8985 (string_response&) (*this ) = std::move (b);
9086 this ->cycle_callback = std::move (b.cycle_callback );
9187 this ->closure_data = std::move (b.closure_data );
92- this ->completed = b.completed ;
9388
9489 return *this ;
9590 }
@@ -100,32 +95,17 @@ class deferred_response : public string_response
10095
10196 MHD_Response* get_raw_response ()
10297 {
103- return details::get_raw_response_helper ((void *) this , completed, &(this ->cb ));
104- }
105-
106- void decorate_response (MHD_Response* response)
107- {
108- if (completed)
109- {
110- static_cast <string_response*>(this )->decorate_response (response);
111- }
98+ return details::get_raw_response_helper ((void *) this , &(this ->cb ));
11299 }
113100
114101 private:
115102 ssize_t (*cycle_callback)(std::shared_ptr<T>, char *, size_t );
116103 std::shared_ptr<T> closure_data;
117- bool completed;
118104
119105 static ssize_t cb (void * cls, uint64_t pos, char * buf, size_t max)
120106 {
121107 deferred_response<T>* dfr = static_cast <deferred_response<T>*>(cls);
122- ssize_t val = dfr->cycle_callback (dfr->closure_data , buf, max);
123- if (val == -1 )
124- {
125- dfr->completed = true ;
126- }
127-
128- return val;
108+ return dfr->cycle_callback (dfr->closure_data , buf, max);
129109 }
130110};
131111
0 commit comments