diff options
author | Stefan Radomski <github@mintwerk.de> | 2017-06-09 08:15:16 (GMT) |
---|---|---|
committer | Stefan Radomski <github@mintwerk.de> | 2017-06-09 08:15:16 (GMT) |
commit | 090016a3f5bcd66d6265fe1504430430f1dee7ed (patch) | |
tree | 10aa6e3b6e7d6ad5b3b1c5a8f856df44419c47a8 /src/uscxml/server/HTTPServer.cpp | |
parent | 259fc022866eb38e8246fac93a5cb8ae7541ba5a (diff) | |
download | uscxml-090016a3f5bcd66d6265fe1504430430f1dee7ed.zip uscxml-090016a3f5bcd66d6265fe1504430430f1dee7ed.tar.gz uscxml-090016a3f5bcd66d6265fe1504430430f1dee7ed.tar.bz2 |
EVLOOP_NO_EXIT_ON_EMPTY workaround
Diffstat (limited to 'src/uscxml/server/HTTPServer.cpp')
-rw-r--r-- | src/uscxml/server/HTTPServer.cpp | 23 |
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; } |