diff options
author | Alexander Tkachev | 2016-07-05 16:31:52 +0600 |
---|---|---|
committer | Alexander Tkachev | 2016-08-24 16:07:55 +0600 |
commit | e601c39802adbb64dce4b449c617e1786ef584ed (patch) | |
tree | 47967b710c44a15524b7170885080aaefdceb949 /backends | |
parent | 3da38ca60b65d3f1bd67b049f3c4b2a90a4d6a19 (diff) | |
download | scummvm-rg350-e601c39802adbb64dce4b449c617e1786ef584ed.tar.gz scummvm-rg350-e601c39802adbb64dce4b449c617e1786ef584ed.tar.bz2 scummvm-rg350-e601c39802adbb64dce4b449c617e1786ef584ed.zip |
CLOUD: Make "Run server" button active
It should show the real server's IP over there, but that doesn't work
yet.
Diffstat (limited to 'backends')
-rw-r--r-- | backends/networking/sdl_net/localwebserver.cpp | 20 | ||||
-rw-r--r-- | backends/networking/sdl_net/localwebserver.h | 3 |
2 files changed, 22 insertions, 1 deletions
diff --git a/backends/networking/sdl_net/localwebserver.cpp b/backends/networking/sdl_net/localwebserver.cpp index 1cfbbb8819..134ccd8508 100644 --- a/backends/networking/sdl_net/localwebserver.cpp +++ b/backends/networking/sdl_net/localwebserver.cpp @@ -71,7 +71,10 @@ void LocalWebserver::stopTimer() { void LocalWebserver::start() { _handleMutex.lock(); _stopOnIdle = false; - if (_timerStarted) return; + if (_timerStarted) { + _handleMutex.unlock(); + return; + } startTimer(); // Create a listening TCP socket @@ -79,6 +82,11 @@ void LocalWebserver::start() { if (SDLNet_ResolveHost(&ip, NULL, SERVER_PORT) == -1) { error("SDLNet_ResolveHost: %s\n", SDLNet_GetError()); } + _address = Common::String::format( + "http://%u.%u.%u.%u:%u/", + (ip.host>>24)&0xFF, (ip.host >> 16) & 0xFF, (ip.host >> 8) & 0xFF, ip.host & 0xFF, + SERVER_PORT + ); _serverSocket = SDLNet_TCP_Open(&ip); if (!_serverSocket) { error("SDLNet_TCP_Open: %s\n", SDLNet_GetError()); @@ -130,8 +138,18 @@ void LocalWebserver::removePathHandler(Common::String path) { _pathHandlers.erase(path); } +Common::String LocalWebserver::getAddress() { return _address; } + IndexPageHandler &LocalWebserver::indexPageHandler() { return _indexPageHandler; } +bool LocalWebserver::isRunning() { + bool result = false; + _handleMutex.lock(); + result = _timerStarted; + _handleMutex.unlock(); + return result; +} + void LocalWebserver::handle() { _handleMutex.lock(); int numready = SDLNet_CheckSockets(_set, 0); diff --git a/backends/networking/sdl_net/localwebserver.h b/backends/networking/sdl_net/localwebserver.h index 2bd8daff5d..f73d1b2850 100644 --- a/backends/networking/sdl_net/localwebserver.h +++ b/backends/networking/sdl_net/localwebserver.h @@ -59,6 +59,7 @@ class LocalWebserver : public Common::Singleton<LocalWebserver> { IndexPageHandler _indexPageHandler; uint32 _idlingFrames; Common::Mutex _handleMutex; + Common::String _address; void startTimer(int interval = TIMER_INTERVAL); void stopTimer(); @@ -76,7 +77,9 @@ public: void addPathHandler(Common::String path, ClientHandler handler); void removePathHandler(Common::String path); + Common::String getAddress(); IndexPageHandler &indexPageHandler(); + bool isRunning(); static void setClientGetHandler(Client &client, Common::String response, long code = 200, const char *mimeType = nullptr); static void setClientGetHandler(Client &client, Common::SeekableReadStream *responseStream, long code = 200, const char *mimeType = nullptr); |