diff options
Diffstat (limited to 'backends/networking/sdl_net')
| -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);  | 
