diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/chat/ChatController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/chat/ChatController.java index ac2bb0e..7fa722e 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/chat/ChatController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/chat/ChatController.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.client.chat; +import ch.unibas.dmi.dbis.cs108.casono.client.network.ChatClient; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import java.util.List; @@ -11,6 +12,7 @@ public class ChatController { private final String username; private final ClientService clientService; + private final ChatClient chatClient; private ChatModel chatModel; @@ -19,6 +21,7 @@ public class ChatController { public ChatController(String username, ClientService clientService) { this.username = username; this.clientService = clientService; + this.chatClient = new ChatClient(this.clientService); } public void createChat(int game_id) { @@ -42,7 +45,7 @@ public class ChatController { * method to get all messages from the server */ public Boolean receiveMessage() { - List newMessages = clientService.getMessages(); + List newMessages = chatClient.getMessages(); if (!newMessages.isEmpty()) { for (Message msg : newMessages) { chatModel.addMessage(msg); @@ -56,7 +59,7 @@ public class ChatController { * @param message */ public void onSendToNetwork(Message message) { - clientService.sendMessage(message); + chatClient.sendMessage(message); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ChatClient.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ChatClient.java new file mode 100644 index 0000000..b9f30c4 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ChatClient.java @@ -0,0 +1,45 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.network; + +import ch.unibas.dmi.dbis.cs108.casono.client.chat.Message; + +import java.util.ArrayList; +import java.util.List; + +public class ChatClient { + + private ClientService clientService; + + public ChatClient(ClientService clientService) { + this.clientService = clientService; + } + + /** + * sends a message to the server + * @param message + */ + + public void sendMessage(Message message) { + String request = "SEND_MESSAGE " + message.toArgsString(); + clientService.processCommand(request); + } + + /** + * Send a Request to get the number of Messages currently in the Queue for the client. + * Then proceeds, if needed, to get the messages by sending + */ + + public List getMessages() { + String countStr = clientService.processCommand("GET_MESSAGE_COUNT"); + int count = Integer.parseInt(countStr); + System.out.println("Got " + count + " messages"); + List messages = new ArrayList<>(); + for (int i = 0; i < count; i++) { + String message = clientService.processCommand("GET_NEXT_MESSAGE"); + if (message != null) { + Message message1 = Message.toMessage(message); + messages.add(message1); + } + } + return messages; + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java index c26163b..78594e4 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java @@ -1,12 +1,10 @@ package ch.unibas.dmi.dbis.cs108.casono.client.network; -import ch.unibas.dmi.dbis.cs108.casono.server.network.NetworkManager; import ch.unibas.dmi.dbis.cs108.casono.server.network.transport.RawPacket; import ch.unibas.dmi.dbis.cs108.casono.server.network.transport.TcpTransport; import java.net.Socket; import java.util.ArrayList; -import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -16,8 +14,6 @@ import java.io.IOException; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import ch.unibas.dmi.dbis.cs108.casono.client.chat.Message; - /** * Responsible for the transferring of the data from the Client to the Server and the other way around @@ -54,56 +50,6 @@ public class ClientService { executor = Executors.newSingleThreadExecutor(); } - /** - * Sends a ping to the server - * Returns nothing, the method processMessage() already handles the cases "+OK" or "-ERROR" - */ - - public void ping() { - processMessage("PING"); - } - - /** - * Sends a login request to the server to create a new user on the server - * @param username - * @return - a new username, if the same username is already used by someone else - */ - - public String login(String username) { - String msg = "LOGIN USERNAME=" + username; - return processMessage(msg); - } - - /** - * Send a Request to get the number of Messages currently in the Queue for the client. - * Then proceeds, if needed, to get the messages by sending - */ - - public List getMessages() { - String countStr = processMessage("GET_MESSAGE_COUNT"); - int count = Integer.parseInt(countStr); - System.out.println("Got " + count + " messages"); - List messages = new ArrayList<>(); - for (int i = 0; i < count; i++) { - String message = processMessage("GET_NEXT_MESSAGE"); - if (message != null) { - Message message1 = Message.toMessage(message); - messages.add(message1); - } - } - return messages; - } - - /** - * Sends a Request to the Server containing all relevant information of the message the client wrote. - * @param message - * @return - */ - - public void sendMessage(Message message) { - String request = "SEND_MESSAGE " + message.toArgsString(); - processMessage(request); - } /** * Sends the Requests to the server and waits for the response @@ -114,7 +60,7 @@ public class ClientService { * (+OK will not be returned) */ - private String processMessage(String message) { + protected String processCommand(String message) { AtomicReference response = new AtomicReference<>(); sendRequest(() -> { try { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/CoreClient.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/CoreClient.java new file mode 100644 index 0000000..92902bc --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/CoreClient.java @@ -0,0 +1,17 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.network; + +public class CoreClient { + private final ClientService clientService; + + public CoreClient(ClientService clientservice) { + this.clientService = clientservice; + } + + public void ping() { + clientService.processCommand("PING"); + } + + public void login(String user) { + clientService.processCommand("LOGIN USERNAME=" + user); + } +} \ No newline at end of file