From 52b217d9deb4eb36eb7210a3e884e3cadd317120 Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Mon, 1 May 2017 17:25:04 +0900
Subject: [PATCH] Add signals

---
 app/src/main.cpp                       |  2 ++
 app/src/websockets/websocketserver.cpp | 11 +++++++----
 app/src/websockets/websocketserver.h   |  4 ++++
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/app/src/main.cpp b/app/src/main.cpp
index acfa5fd..6d2aa87 100644
--- a/app/src/main.cpp
+++ b/app/src/main.cpp
@@ -49,6 +49,8 @@ int main(int argc, char *argv[])
 
     // Setup websocket server
     WebSocketServer *webSocketServer = new WebSocketServer(appConfigApplication["id"].toString(), port, &app);
+    QObject::connect(webSocketServer, &WebSocketServer::stopped, &app, &QCoreApplication::quit);
+
     if (webSocketServer->start()) {
         qDebug() << "Websocket server started at:" << webSocketServer->serverUrl().toString();
     }
diff --git a/app/src/websockets/websocketserver.cpp b/app/src/websockets/websocketserver.cpp
index b323173..dc4d308 100644
--- a/app/src/websockets/websocketserver.cpp
+++ b/app/src/websockets/websocketserver.cpp
@@ -7,19 +7,22 @@ WebSocketServer::WebSocketServer(const QString &serverName, quint16 serverPort,
     : QObject(parent), serverName_(serverName), serverPort_(serverPort)
 {
     webSocketServer_ = new QWebSocketServer(serverName_, QWebSocketServer::NonSecureMode, this);
+    connect(webSocketServer_, &QWebSocketServer::closed, this, &WebSocketServer::stopped);
 }
 
 WebSocketServer::~WebSocketServer()
 {
-    if (webSocketServer_->isListening()) {
-        webSocketServer_->close();
-    }
+    stop();
     webSocketServer_->deleteLater();
 }
 
 bool WebSocketServer::start()
 {
-    return webSocketServer_->listen(QHostAddress::Any, serverPort_);
+    if (webSocketServer_->listen(QHostAddress::Any, serverPort_)) {
+        emit started();
+        return true;
+    }
+    return false;
 }
 
 void WebSocketServer::stop()
diff --git a/app/src/websockets/websocketserver.h b/app/src/websockets/websocketserver.h
index b381e6e..d17dd50 100644
--- a/app/src/websockets/websocketserver.h
+++ b/app/src/websockets/websocketserver.h
@@ -13,6 +13,10 @@ public:
     explicit WebSocketServer(const QString &serverName, quint16 serverPort = 0, QObject *parent = 0);
     ~WebSocketServer();
 
+signals:
+    void started();
+    void stopped();
+
 public slots:
     bool start();
     void stop();
-- 
GitLab