Add: Added Partial Logic For Client-Server Serialized Message Handling.
This commit is contained in:
@@ -14,10 +14,11 @@ import it.polimi.ingsw.gc14.Model.Orders.Order4;
|
||||
import it.polimi.ingsw.gc14.Model.Orders.Order5;
|
||||
import it.polimi.ingsw.gc14.Model.GamePackage.GameStages;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Game {
|
||||
public class Game implements Serializable {
|
||||
|
||||
private ArrayList<Player> playersList;
|
||||
private CurrentState currentState;
|
||||
|
||||
@@ -8,11 +8,15 @@ import java.util.List;
|
||||
|
||||
public class ClientHandler implements Runnable {
|
||||
private Socket clientSocket;
|
||||
BufferedReader in = null;
|
||||
PrintWriter out = null;
|
||||
public ObjectInputStream in = null;
|
||||
public ObjectOutputStream out = null;
|
||||
List<ClientHandler> clientHandlers;
|
||||
GameController gameController;
|
||||
|
||||
public Socket getClientSocket() {
|
||||
return clientSocket;
|
||||
}
|
||||
|
||||
public ClientHandler(Socket clientSocket, List<ClientHandler> clientHandlers, GameController gameController) {
|
||||
this.clientSocket = clientSocket;
|
||||
this.clientHandlers = clientHandlers;
|
||||
@@ -25,21 +29,11 @@ public class ClientHandler implements Runnable {
|
||||
}
|
||||
|
||||
private void clientLoop(){
|
||||
try{
|
||||
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||
synchronized(out){
|
||||
out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||
}
|
||||
}
|
||||
catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
String s = "";
|
||||
try{
|
||||
while ((s = in.readLine()) != null) {
|
||||
synchronized(out){
|
||||
System.out.println(s);
|
||||
out.println(s.toUpperCase());
|
||||
//do something
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,7 +44,15 @@ public class ClientHandler implements Runnable {
|
||||
|
||||
public void notifyEvent(Object event){
|
||||
synchronized(out){
|
||||
out.println(event.toString());
|
||||
try{
|
||||
out = new ObjectOutputStream(clientSocket.getOutputStream());
|
||||
out.writeObject(gameController.getModel());
|
||||
}
|
||||
catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package it.polimi.ingsw.gc14.Network.TCP.Server;
|
||||
|
||||
import it.polimi.ingsw.gc14.Controller.GameController;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -15,6 +15,8 @@ public class TCPServer {
|
||||
|
||||
private List<ClientHandler> clientHandlers;
|
||||
|
||||
|
||||
|
||||
private int getConnectedPlayers(){
|
||||
return ConnectedPlayers;
|
||||
}
|
||||
@@ -46,10 +48,27 @@ public class TCPServer {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
System.out.println("Accepted");
|
||||
System.out.println("Accepted player: " + gameController.getModel().getPlayerByUsername(clientSocket.getInetAddress().toString()));
|
||||
|
||||
ConnectedPlayers++;
|
||||
ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController);
|
||||
clientHandlers.add(clientHandler);
|
||||
|
||||
//Sending model to clients
|
||||
if(ConnectedPlayers == gameController.getModel().getNPlayers()){
|
||||
for (ClientHandler handler : clientHandlers) {
|
||||
try {
|
||||
synchronized(handler.out){
|
||||
ObjectOutputStream socketTx = new ObjectOutputStream(handler.getClientSocket().getOutputStream());
|
||||
socketTx.writeObject(gameController.getModel());
|
||||
}
|
||||
}
|
||||
catch(IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Thread t = new Thread(clientHandler);
|
||||
t.start();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user