From b349963a49971e087bd595584f10398df874b60a Mon Sep 17 00:00:00 2001
From: KGreg <kgreg314@gmail.com>
Date: Sat, 7 Apr 2018 18:11:35 +0200
Subject: [PATCH] ConnectionLost mechanism

---
 .../java/onlab/kvizclient/LobbyActivity.java  | 22 +++++-----------
 .../java/onlab/kvizserver/LobbyActivity.java  | 25 +++++++++++++------
 2 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
index c136d4f..1278593 100644
--- a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
+++ b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java
@@ -87,7 +87,7 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
             discovering = false;
 
             for (ServerModel server : servers) {
-                SendDisconnect(server);
+                SendConnectionLost(server);
             }
 
             for (Thread thread : threads) {
@@ -318,7 +318,7 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
                                         //nem sikerült
                                     }
                                     break;
-                                case "Disconnect":
+                                case "ConnectionLost":
                                     for (ServerModel server: servers) {
                                         if(server.getSocket() == serverModel.getSocket())
                                         {
@@ -332,18 +332,8 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
                                     }
 
                                     break;
-                                case "-1":
-                                    for (ServerModel server: servers) {
-                                        if(server.getSocket() == serverModel.getSocket())
-                                        {
-                                            int position = servers.indexOf(serverModel);
-                                            updateConversationHandler.post(new updateUIThread(Operation.REMOVE_SERVER, serverModel));
-                                            servers.remove(serverModel);
-                                            serverModel.getSocket().close();
-                                            threads.remove(Thread.currentThread());
-                                            Thread.currentThread().interrupt();
-                                        }
-                                    }
+                                case "Disconnect":
+                                    //
                                     break;
                                 default:
                                     break;
@@ -405,13 +395,13 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection
         recyclerView.setAdapter(adapter);
     }
 
-    private void SendDisconnect(ServerModel server)
+    private void SendConnectionLost(ServerModel server)
     {
         try {
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(server.getSocket().getOutputStream())), true);
 
-            out.println("Disconnect");
+            out.println("ConnectionLost");
 
             out.close();
         } catch (IOException e) {
diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java
index 26b667c..ae0cc29 100644
--- a/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java
+++ b/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java
@@ -119,14 +119,14 @@ public class LobbyActivity extends AppCompatActivity {
             registred = false;
 
             for (ClientModel client : allclients) {
-                SendDisconnect(client);
+                SendConnectionLost(client);
             }
-            /*
+
 
             for (Thread thread : threads) {
                 thread.interrupt();
             }
-            */
+
 
         }
         super.onPause();
@@ -266,7 +266,7 @@ public class LobbyActivity extends AppCompatActivity {
                         }
                         else
                         {
-                            params[0] = "Disconnect";
+                            params[0] = "ConnectionLost";
                         }
 
                         switch (params[0]) {
@@ -293,12 +293,13 @@ public class LobbyActivity extends AppCompatActivity {
                                 }
                                 out.println("Connect##Ok!");
                                 break;
-                            case "Disconnect":
+                            case "ConnectionLost":
                                 for (ClientModel client : clients) {
                                     if (client.getClientsocket() == clientSocket) {
                                         int position = clients.indexOf(client);
                                         updateConversationHandler.post(new updateUIThread(Operation.REMOVE_CLIENT, Integer.toString(position)));
                                         clients.remove(client);
+                                        allclients.remove(client);
                                         clientSocket.close();
                                         threads.remove(Thread.currentThread());
                                         Thread.currentThread().interrupt();
@@ -307,6 +308,16 @@ public class LobbyActivity extends AppCompatActivity {
                                     }
                                 };
                                 break;
+                            case "Disconnect":
+                                for (ClientModel client : clients) {
+                                    if (client.getClientsocket() == clientSocket) {
+                                        int position = clients.indexOf(client);
+                                        clients.remove(client);
+                                        updateConversationHandler.post(new updateUIThread(Operation.REMOVE_CLIENT, Integer.toString(position)));
+                                        break;
+                                    }
+                                };
+                                break;
 
                             default:
                                 out.println("Unknown Message!");
@@ -366,13 +377,13 @@ public class LobbyActivity extends AppCompatActivity {
         recyclerView.setAdapter(adapter);
     }
 
-    private void SendDisconnect(ClientModel client)
+    private void SendConnectionLost(ClientModel client)
     {
         try {
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(client.getClientsocket().getOutputStream())), true);
 
-            out.println("Disconnect");
+            out.println("ConnectionLost");
 
             out.close();
         } catch (IOException e) {
-- 
GitLab