Fix: Resolving Git Merge Conflicts #253
@@ -1,5 +1,6 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.casono.client.chat;
|
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 ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@ public class ChatController {
|
|||||||
|
|
||||||
private final String username;
|
private final String username;
|
||||||
private final ClientService clientService;
|
private final ClientService clientService;
|
||||||
|
private final ChatClient chatClient;
|
||||||
|
|
||||||
private ChatModel chatModel;
|
private ChatModel chatModel;
|
||||||
|
|
||||||
@@ -19,6 +21,7 @@ public class ChatController {
|
|||||||
public ChatController(String username, ClientService clientService) {
|
public ChatController(String username, ClientService clientService) {
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.clientService = clientService;
|
this.clientService = clientService;
|
||||||
|
this.chatClient = new ChatClient(this.clientService);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createChat(int game_id) {
|
public void createChat(int game_id) {
|
||||||
@@ -42,7 +45,7 @@ public class ChatController {
|
|||||||
* method to get all messages from the server
|
* method to get all messages from the server
|
||||||
*/
|
*/
|
||||||
public Boolean receiveMessage() {
|
public Boolean receiveMessage() {
|
||||||
List<Message> newMessages = clientService.getMessages();
|
List<Message> newMessages = chatClient.getMessages();
|
||||||
if (!newMessages.isEmpty()) {
|
if (!newMessages.isEmpty()) {
|
||||||
for (Message msg : newMessages) {
|
for (Message msg : newMessages) {
|
||||||
chatModel.addMessage(msg);
|
chatModel.addMessage(msg);
|
||||||
@@ -56,7 +59,7 @@ public class ChatController {
|
|||||||
* @param message
|
* @param message
|
||||||
*/
|
*/
|
||||||
public void onSendToNetwork(Message message) {
|
public void onSendToNetwork(Message message) {
|
||||||
clientService.sendMessage(message);
|
chatClient.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<Message> getMessages() {
|
||||||
|
String countStr = clientService.processCommand("GET_MESSAGE_COUNT");
|
||||||
|
int count = Integer.parseInt(countStr);
|
||||||
|
System.out.println("Got " + count + " messages");
|
||||||
|
List<Message> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
package ch.unibas.dmi.dbis.cs108.casono.client.network;
|
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.RawPacket;
|
||||||
import ch.unibas.dmi.dbis.cs108.casono.server.network.transport.TcpTransport;
|
import ch.unibas.dmi.dbis.cs108.casono.server.network.transport.TcpTransport;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@@ -16,8 +14,6 @@ import java.io.IOException;
|
|||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
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
|
* 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();
|
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<Message> getMessages() {
|
|
||||||
String countStr = processMessage("GET_MESSAGE_COUNT");
|
|
||||||
int count = Integer.parseInt(countStr);
|
|
||||||
System.out.println("Got " + count + " messages");
|
|
||||||
List<Message> 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
|
* Sends the Requests to the server and waits for the response
|
||||||
@@ -114,7 +60,7 @@ public class ClientService {
|
|||||||
* (+OK will not be returned)
|
* (+OK will not be returned)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private String processMessage(String message) {
|
protected String processCommand(String message) {
|
||||||
AtomicReference<String> response = new AtomicReference<>();
|
AtomicReference<String> response = new AtomicReference<>();
|
||||||
sendRequest(() -> {
|
sendRequest(() -> {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user