Skip to content

Commit 1f32013

Browse files
author
Sebastiano Merlino
committed
Activated COMET subsystem
Changed INTERNAL_SELECT to use a remanaged connection system.
1 parent 9f094be commit 1f32013

File tree

5 files changed

+98
-134
lines changed

5 files changed

+98
-134
lines changed

src/http_response.cpp

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,6 @@ void http_response::get_raw_response_lp_receive(
229229
webserver* ws
230230
)
231231
{
232-
233-
#ifdef USE_COMET
234232
this->ws = ws;
235233
this->connection_id = MHD_get_connection_info(
236234
this->underlying_connection,
@@ -246,13 +244,6 @@ void http_response::get_raw_response_lp_receive(
246244
keepalive_secs,
247245
keepalive_msg
248246
);
249-
250-
#else //USE_COMET
251-
252-
http_response::get_raw_response(response, ws);
253-
254-
#endif //USE_COMET
255-
256247
}
257248

258249
ssize_t long_polling_receive_response::data_generator(
@@ -262,7 +253,6 @@ ssize_t long_polling_receive_response::data_generator(
262253
size_t max
263254
)
264255
{
265-
#ifdef USE_COMET
266256
long_polling_receive_response* _this =
267257
static_cast<long_polling_receive_response*>(cls);
268258

@@ -275,20 +265,15 @@ ssize_t long_polling_receive_response::data_generator(
275265
}
276266
else
277267
return 0;
278-
#else //USE_COMET
279-
return 0;
280-
#endif //USE_COMET
281268
}
282269

283270
void http_response::get_raw_response_lp_send(
284271
MHD_Response** response,
285272
webserver* ws
286273
)
287274
{
288-
http_response::get_raw_response(response, ws);
289-
#ifdef USE_COMET
275+
http_response::get_raw_response_str(response, ws);
290276
ws->send_message_to_topic(send_topic, content);
291-
#endif //USE_COMET
292277
}
293278

294279
};

src/httpserver/http_response.hpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ class http_response
108108
get_raw_response(this, &http_response::get_raw_response_str),
109109
decorate_response(this, &http_response::decorate_response_str),
110110
enqueue_response(this, &http_response::enqueue_response_str),
111-
completed(false)
111+
completed(false),
112+
ws(0x0),
113+
connection_id(-1)
112114
{
113115
set_header(http_utils::http_header_content_type, content_type);
114116
}
@@ -139,7 +141,9 @@ class http_response
139141
get_raw_response(b.get_raw_response),
140142
decorate_response(b.decorate_response),
141143
enqueue_response(b.enqueue_response),
142-
completed(b.completed)
144+
completed(b.completed),
145+
ws(b.ws),
146+
connection_id(b.connection_id)
143147
{
144148
}
145149

@@ -383,6 +387,9 @@ class http_response
383387

384388
bool completed;
385389

390+
webserver* ws;
391+
int connection_id;
392+
386393
void get_raw_response_str(MHD_Response** res, webserver* ws = 0x0);
387394
void get_raw_response_file(MHD_Response** res, webserver* ws = 0x0);
388395
void get_raw_response_switch_r(MHD_Response** res, webserver* ws = 0x0);
@@ -465,7 +472,9 @@ inline http_response::http_response<TYPE> \
465472
get_raw_response(this, &http_response::get_raw_response_## S1),\
466473
decorate_response(this, &http_response::decorate_response_## S2),\
467474
enqueue_response(this, &http_response::enqueue_response_## S3),\
468-
completed(false)\
475+
completed(false),\
476+
ws(0x0),\
477+
connection_id(-1)\
469478
{\
470479
set_header(http_utils::http_header_content_type, content_type);\
471480
}
@@ -629,12 +638,11 @@ class long_polling_receive_response : public http_response
629638
long_polling_receive_response(const http_response& b) : http_response(b)
630639
{
631640
}
632-
private:
641+
633642
static ssize_t data_generator (void* cls, uint64_t pos,
634643
char* buf, size_t max
635644
);
636-
int connection_id;
637-
httpserver::webserver* ws;
645+
638646
friend class webserver;
639647
};
640648

src/httpserver/http_utils.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,9 @@ class http_utils
7474

7575
enum start_method_T
7676
{
77-
INTERNAL_SELECT = MHD_USE_SELECT_INTERNALLY,
77+
INTERNAL_SELECT = MHD_NO_FLAG,
7878
THREADS = MHD_USE_THREAD_PER_CONNECTION,
79-
POLL = MHD_USE_THREAD_PER_CONNECTION | MHD_USE_POLL,
80-
INTERNAL_REMANAGED = MHD_NO_FLAG
79+
POLL = MHD_USE_THREAD_PER_CONNECTION | MHD_USE_POLL
8180
};
8281

8382
enum policy_T

src/httpserver/webserver.hpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ namespace details
241241
int*
242242
);
243243

244-
typedef long(*get_timeout_ptr)();
244+
typedef struct timeval(*get_timeout_ptr)();
245245
typedef void(*dispatch_events_ptr)();
246246
supply_events_ptr supply_events;
247247
get_timeout_ptr get_timeout;
@@ -293,7 +293,7 @@ class event_supplier
293293
);
294294
}
295295

296-
long get_timeout() const
296+
struct timeval get_timeout() const
297297
{
298298
return static_cast<CHILD*>(this)->get_timeout();
299299
}
@@ -508,15 +508,13 @@ class webserver
508508

509509
void remove_event_supplier(const std::string& id);
510510

511-
void run();
512-
513511
/**
514512
* Method used to kill the webserver waiting for it to terminate
515513
**/
516514
void sweet_kill();
517515
private:
518516
const int port;
519-
const http_utils::start_method_T start_method;
517+
http_utils::start_method_T start_method;
520518
const int max_threads;
521519
const int max_connections;
522520
const int memory_limit;
@@ -588,7 +586,7 @@ class webserver
588586

589587
void init(render_ptr single_resource);
590588
static void* select(void* self);
591-
void schedule_fd(int fd, fd_set* schedule_list, int* max);
589+
// void schedule_fd(int fd, fd_set* schedule_list, int* max);
592590
static void* cleaner(void* self);
593591
void clean_connections();
594592

0 commit comments

Comments
 (0)