From 80bb5e42f457d468edb0626761dba0c829dd7aa8 Mon Sep 17 00:00:00 2001 From: KGreg <kgreg314@gmail.com> Date: Mon, 30 Apr 2018 19:45:52 +0200 Subject: [PATCH] Handling Observer and Client --- .../java/onlab/kvizclient/LobbyActivity.java | 4 +- .../java/onlab/kvizserver/LobbyActivity.java | 94 ++++++++++++++++--- 2 files changed, 81 insertions(+), 17 deletions(-) diff --git a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java index 4cefae2..2db61fd 100644 --- a/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java +++ b/KvizClient/app/src/main/java/onlab/kvizclient/LobbyActivity.java @@ -234,7 +234,7 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection public void onConnect(int serverNumber) { try { if(servers.size() > serverNumber) { - String str = "Connect##"+CLIENT_NAME; + String str = "Connect##Client##"+CLIENT_NAME; ServerModel sm = servers.get(serverNumber); Socket socket = sm.getSocket(); ServerHolder.setServerModel(sm); @@ -254,7 +254,7 @@ public class LobbyActivity extends AppCompatActivity implements ServerConnection public void onDisconnect() { try { if (ServerHolder.getSocket() != null) { - String str = "Disconnect##"+CLIENT_NAME; + String str = "Disconnect##Client"+CLIENT_NAME; PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(ServerHolder.getSocket().getOutputStream())), true); out.println(str); diff --git a/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java b/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java index 81f8b5b..bf3ec08 100644 --- a/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java +++ b/KvizServer/app/src/main/java/onlab/kvizserver/LobbyActivity.java @@ -41,6 +41,7 @@ public class LobbyActivity extends AppCompatActivity { Handler updateConversationHandler; private ArrayList<ClientModel> clients; + private ArrayList<ClientModel> observers; private RecyclerView recyclerView; private ClientListAdapter adapter; @@ -62,6 +63,7 @@ public class LobbyActivity extends AppCompatActivity { setContentView(R.layout.activity_lobby); clients = new ArrayList<ClientModel>(); + observers = new ArrayList<ClientModel>(); allclients = new ArrayList<ClientModel>(); @@ -277,21 +279,57 @@ public class LobbyActivity extends AppCompatActivity { break; case "Connect": boolean van = false; - for (ClientModel client : clients) { - if (client.getClientsocket() == clientSocket) { - van = true; - break; + if(params.length>1) + { + if(params[1].equals("Observer")) + { + for (ClientModel observer : observers) { + if (observer.getClientsocket() == clientSocket) { + van = true; + break; + } + } + } + if(params[1].equals("Client")) + { + for (ClientModel client : clients) { + if (client.getClientsocket() == clientSocket) { + van = true; + break; + } + } + } + else + { + //hiba } } + if (!van) { String cname = "Unknown"; + if (params.length > 2) { + cname = params[2]; + } + if (params.length > 1) { - cname = params[1]; + if (params[1].equals("Observer")) { + observers.add(new ClientModel(cname, clientSocket)); + // TODO: 2018. 04. 30. Add observer + } + if (params[1].equals("Client")) { + clients.add(new ClientModel(cname, clientSocket)); + updateConversationHandler.post(new updateUIThread(Operation.ADD_CLIENT, "")); + } + + + + } + else + { + //hiba } - clients.add(new ClientModel(cname, clientSocket)); - updateConversationHandler.post(new updateUIThread(Operation.ADD_CLIENT, "")); } out.println("Connect##Ok!"); break; @@ -311,16 +349,42 @@ 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; + if(params.length>1) + { + if(params[1].equals("Observer")) + { + for (ClientModel observer : observers) { + if (observer.getClientsocket() == clientSocket) { + int position = observers.indexOf(observer); + observers.remove(observer); + // TODO: 2018. 04. 30. Remove Observer + break; + } + + }; + } + if(params[1].equals("Client")) + { + 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; + } + + }; + } + else + { + //hiba } + } + else + { + //hiba + } - }; break; default: out.println("Unknown Message!"); -- GitLab