Skip to content

Commit 07c8bc5

Browse files
author
Sebastiano Merlino
committed
Removed "virtual" usage in response processing
1 parent 6dda9e2 commit 07c8bc5

File tree

3 files changed

+401
-421
lines changed

3 files changed

+401
-421
lines changed

src/http_response.cpp

Lines changed: 15 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ using namespace std;
3030
namespace httpserver
3131
{
3232

33-
cache_response::~cache_response()
33+
http_response::~http_response()
3434
{
3535
if(ce != 0x0)
3636
webserver::unlock_cache_entry(ce);
@@ -107,7 +107,7 @@ shoutCAST_response::shoutCAST_response
107107
const std::string& content_type,
108108
bool autodelete
109109
):
110-
http_response(http_response::SHOUTCAST_CONTENT, content, response_code | http_utils::shoutcast_response, content_type, autodelete)
110+
http_response(this, content, response_code | http_utils::shoutcast_response, content_type, autodelete)
111111
{
112112
}
113113

@@ -116,13 +116,13 @@ ssize_t deferred_response::cycle_callback(const std::string& buf)
116116
return -1;
117117
}
118118

119-
void http_response::get_raw_response(MHD_Response** response, webserver* ws)
119+
void http_response::get_raw_response_str(MHD_Response** response, webserver* ws)
120120
{
121121
size_t size = &(*content.end()) - &(*content.begin());
122122
*response = MHD_create_response_from_buffer(size, (void*) content.c_str(), MHD_RESPMEM_PERSISTENT);
123123
}
124124

125-
void http_response::decorate_response(MHD_Response* response)
125+
void http_response::decorate_response_str(MHD_Response* response)
126126
{
127127
map<string, string, header_comparator>::iterator it;
128128
for (it=headers.begin() ; it != headers.end(); ++it)
@@ -133,26 +133,26 @@ void http_response::decorate_response(MHD_Response* response)
133133
MHD_add_response_header(response, "Set-Cookie", ((*it).first + "=" + (*it).second).c_str());
134134
}
135135

136-
void cache_response::decorate_response(MHD_Response* response)
136+
int http_response::enqueue_response_str(MHD_Connection* connection, MHD_Response* response)
137137
{
138+
return MHD_queue_response(connection, response_code, response);
138139
}
139140

140-
int http_response::enqueue_response(MHD_Connection* connection, MHD_Response* response)
141+
void http_response::decorate_response_cache(MHD_Response* response)
141142
{
142-
return MHD_queue_response(connection, response_code, response);
143143
}
144144

145-
int http_basic_auth_fail_response::enqueue_response(MHD_Connection* connection, MHD_Response* response)
145+
int http_response::enqueue_response_basic(MHD_Connection* connection, MHD_Response* response)
146146
{
147147
return MHD_queue_basic_auth_fail_response(connection, realm.c_str(), response);
148148
}
149149

150-
int http_digest_auth_fail_response::enqueue_response(MHD_Connection* connection, MHD_Response* response)
150+
int http_response::enqueue_response_digest(MHD_Connection* connection, MHD_Response* response)
151151
{
152152
return MHD_queue_auth_fail_response(connection, realm.c_str(), opaque.c_str(), response, reload_nonce ? MHD_YES : MHD_NO);
153153
}
154154

155-
void http_file_response::get_raw_response(MHD_Response** response, webserver* ws)
155+
void http_response::get_raw_response_file(MHD_Response** response, webserver* ws)
156156
{
157157
char* page = NULL;
158158
size_t size = http::load_file(filename.c_str(), &page);
@@ -162,7 +162,7 @@ void http_file_response::get_raw_response(MHD_Response** response, webserver* ws
162162
*response = MHD_create_response_from_buffer(size, (void*) "", MHD_RESPMEM_PERSISTENT);
163163
}
164164

165-
void cache_response::get_raw_response(MHD_Response** response, webserver* ws)
165+
void http_response::get_raw_response_cache(MHD_Response** response, webserver* ws)
166166
{
167167
bool valid;
168168
http_response* r;
@@ -189,21 +189,21 @@ ssize_t cb(void* cls, uint64_t pos, char* buf, size_t max)
189189

190190
}
191191

192-
void deferred_response::get_raw_response(MHD_Response** response, webserver* ws)
192+
void http_response::get_raw_response_deferred(MHD_Response** response, webserver* ws)
193193
{
194194
if(!completed)
195195
*response = MHD_create_response_from_callback(MHD_SIZE_UNKNOWN, 1024, &details::cb, this, NULL);
196196
else
197197
static_cast<http_response*>(this)->get_raw_response(response, ws);
198198
}
199199

200-
void deferred_response::decorate_response(MHD_Response* response)
200+
void http_response::decorate_response_deferred(MHD_Response* response)
201201
{
202202
if(completed)
203203
static_cast<http_response*>(this)->decorate_response(response);
204204
}
205205

206-
void long_polling_receive_response::get_raw_response(MHD_Response** response, webserver* ws)
206+
void http_response::get_raw_response_lp_receive(MHD_Response** response, webserver* ws)
207207
{
208208
#ifdef USE_COMET
209209
this->ws = ws;
@@ -234,49 +234,12 @@ ssize_t long_polling_receive_response::data_generator (void* cls, uint64_t pos,
234234
#endif //USE_COMET
235235
}
236236

237-
void long_polling_send_response::get_raw_response(MHD_Response** response, webserver* ws)
237+
void http_response::get_raw_response_lp_send(MHD_Response** response, webserver* ws)
238238
{
239239
http_response::get_raw_response(response, ws);
240240
#ifdef USE_COMET
241241
ws->send_message_to_topic(send_topic, content);
242242
#endif //USE_COMET
243243
}
244244

245-
void clone_response(const http_response& hr, http_response** dhrs)
246-
{
247-
switch(hr.response_type)
248-
{
249-
case(http_response::STRING_CONTENT):
250-
*dhrs = new http_string_response(hr);
251-
return;
252-
case(http_response::FILE_CONTENT):
253-
*dhrs = new http_file_response(hr);
254-
return;
255-
case(http_response::SHOUTCAST_CONTENT):
256-
*dhrs = new shoutCAST_response(hr);
257-
return;
258-
case(http_response::DIGEST_AUTH_FAIL):
259-
*dhrs = new http_digest_auth_fail_response(hr);
260-
return;
261-
case(http_response::BASIC_AUTH_FAIL):
262-
*dhrs = new http_basic_auth_fail_response(hr);
263-
return;
264-
case(http_response::SWITCH_PROTOCOL):
265-
*dhrs = new switch_protocol_response(hr);
266-
return;
267-
case(http_response::LONG_POLLING_RECEIVE):
268-
*dhrs = new long_polling_receive_response(hr);
269-
return;
270-
case(http_response::LONG_POLLING_SEND):
271-
*dhrs = new long_polling_send_response(hr);
272-
return;
273-
case(http_response::CACHED_CONTENT):
274-
*dhrs = new cache_response(hr);
275-
return;
276-
case(http_response::DEFERRED):
277-
*dhrs = new deferred_response(hr);
278-
return;
279-
}
280-
}
281-
282245
};

0 commit comments

Comments
 (0)