summaryrefslogtreecommitdiffstats
path: root/src/uscxml/server/HTTPServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/server/HTTPServer.cpp')
-rw-r--r--src/uscxml/server/HTTPServer.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/uscxml/server/HTTPServer.cpp b/src/uscxml/server/HTTPServer.cpp
index 22267dd..faf91d8 100644
--- a/src/uscxml/server/HTTPServer.cpp
+++ b/src/uscxml/server/HTTPServer.cpp
@@ -71,6 +71,15 @@ extern "C" {
namespace uscxml {
+static void dummyCallback(evutil_socket_t fd, short what, void *arg) {
+ // see comments in BasicDelayedEventQueue::run
+ timeval tv;
+ tv.tv_sec = 365 * 24 * 3600;
+ tv.tv_usec = 0;
+ event *ev = *(event **)arg;
+ evtimer_add(ev, &tv);
+}
+
HTTPServer::HTTPServer(unsigned short port, unsigned short wsPort, SSLConfig* sslConf) {
_port = port;
_base = event_base_new();
@@ -79,6 +88,12 @@ HTTPServer::HTTPServer(unsigned short port, unsigned short wsPort, SSLConfig* ss
_thread = NULL;
_httpHandle = NULL;
+ timeval tv;
+ tv.tv_sec = 365 * 24 * 3600;
+ tv.tv_usec = 0;
+ _dummyEvent = evtimer_new(_base, dummyCallback, &_dummyEvent);
+ evtimer_add(_dummyEvent, &tv);
+
#ifdef _WIN32
_wsHandle = NULL;
#else
@@ -738,8 +753,12 @@ void HTTPServer::run(void* instance) {
while(INSTANCE->_isRunning) {
// getting this to be non-polling is somewhat tricky and changes among versions
// event_base_loop(INSTANCE->_base, EVLOOP_ONCE | EVLOOP_NO_EXIT_ON_EMPTY);
- event_base_dispatch(INSTANCE->_base);
- }
+// event_base_dispatch(INSTANCE->_base);
+
+ // BasicDelayedEventQueue::run
+ event_base_loop(INSTANCE->_base, EVLOOP_ONCE);
+
+ }
LOGD(USCXML_INFO) << "HTTP Server stopped" << std::endl;
}