Merge remote-tracking branch 'origin/Story984_Send_XML_After_Clients_Connect' into develop

# Conflicts:
#	src/main/java/seng302/gameServer/ServerToClientThread.java
This commit is contained in:
Zhi You Tan
2017-07-24 21:30:12 +12:00
2 changed files with 19 additions and 17 deletions
@@ -1,5 +1,6 @@
package seng302.gameServer;
import java.util.Observable;
import seng302.client.ClientPacketParser;
import seng302.models.Player;
import seng302.models.stream.PacketBufferDelegate;
@@ -15,7 +16,7 @@ import java.util.concurrent.PriorityBlockingQueue;
* A class describing the overall server, which creates and collects server threads for each client
* Created by wmu16 on 13/07/17.
*/
public class MainServerThread implements Runnable, PacketBufferDelegate, ClientConnectionDelegate{
public class MainServerThread extends Observable implements Runnable, PacketBufferDelegate, ClientConnectionDelegate{
private static final int PORT = 4942;
private static final Integer MAX_NUM_PLAYERS = 3;
@@ -55,6 +56,7 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
heartbeatThread.start();
serverListenThread.start();
//You should handle interrupts in some way, so that the thread won't keep on forever if you exit the app.
while (!thread.isInterrupted()) {
try {
@@ -65,7 +67,6 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
if (GameState.getCurrentStage() == GameStages.PRE_RACE) {
GameState.update();
updateClients();
}
//RACING
@@ -99,6 +100,8 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
}
public void updateClients() {
for (ServerToClientThread serverToClientThread : serverToClientThreads) {
serverToClientThread.updateClient();
@@ -125,7 +128,9 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
public void clientConnected(ServerToClientThread serverToClientThread) {
serverLog("Player Connected From " + serverToClientThread.getThread().getName(), 0);
serverToClientThreads.add(serverToClientThread);
this.addObserver(serverToClientThread);
setChanged();
notifyObservers();
}
/**
@@ -7,6 +7,8 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import java.util.Random;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
@@ -37,7 +39,7 @@ import seng302.utilities.GeoPoint;
* All server threads created and owned by the server thread handler which can trigger client updates on its threads
* Created by wmu16 on 13/07/17.
*/
public class ServerToClientThread implements Runnable {
public class ServerToClientThread implements Runnable, Observer {
private static final Integer LOG_LEVEL = 1;
private static final Integer MAX_ID_ATTEMPTS = 10;
@@ -93,6 +95,11 @@ public class ServerToClientThread implements Runnable {
}
}
@Override
public void update(Observable o, Object arg) {
sendSetupMessages();
}
public void run() {
int sync1;
int sync2;
@@ -177,14 +184,7 @@ public class ServerToClientThread implements Runnable {
//Perform a write if it is time to as delegated by the MainServerThread
if (updateClient) {
// TODO: 13/07/17 wmu16 - Write out game state - some function that would write all appropriate messages to this output stream
// ChatterMessage chatterMessage = new ChatterMessage(4, 14, "Hello, it's me");
// sendMessage(chatterMessage);
// try {
// GameState.outputState(os);
// } catch (IOException e) {
// System.out.println("IO error in server thread upon writing to output stream");
// }
// sendBoatLocationPackets();
sendBoatLocationPackets();
updateClient = false;
}
@@ -247,6 +247,7 @@ public class ServerToClientThread implements Runnable {
xmlMessage = new XMLMessage(xml.getRaceAsXml(), XMLMessageSubType.RACE, xml.getRaceAsXml().length());
sendMessage(xmlMessage);
System.out.println("Sent xml messages for " + thread.getName());
}
@@ -296,10 +297,6 @@ public class ServerToClientThread implements Runnable {
}
public void initialiseRace(){
initialisedRace = true;
}
private int readByte() throws Exception {
int currentByte = -1;