mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Minor structural changes. GameState now has a thread which updates itself so its update
rate can be independent of sending packets to the client in the MainServerThread #story[986] #pair[wmu16, ptg19]
This commit is contained in:
@@ -17,22 +17,17 @@ 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 extends Observable implements Runnable, PacketBufferDelegate, ClientConnectionDelegate{
|
||||
public class MainServerThread extends Observable implements Runnable, ClientConnectionDelegate{
|
||||
|
||||
private static final int PORT = 4942;
|
||||
private static final Integer MAX_NUM_PLAYERS = 3;
|
||||
private static final Integer UPDATES_PER_SECOND = 2;
|
||||
private static final Integer CLIENT_UPDATES_PER_SECOND = 5;
|
||||
private static final int LOG_LEVEL = 1;
|
||||
|
||||
private Thread thread;
|
||||
|
||||
private ServerSocket serverSocket = null;
|
||||
private Socket socket;
|
||||
private ArrayList<ServerToClientThread> serverToClientThreads = new ArrayList<>();
|
||||
|
||||
private PriorityBlockingQueue<StreamPacket> packetBuffer;
|
||||
|
||||
|
||||
public MainServerThread() {
|
||||
try {
|
||||
serverSocket = new ServerSocket(PORT);
|
||||
@@ -40,8 +35,6 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff
|
||||
serverLog("IO error in server thread handler upon trying to make new server socket", 0);
|
||||
}
|
||||
|
||||
packetBuffer = new PriorityBlockingQueue<>();
|
||||
|
||||
thread = new Thread(this);
|
||||
thread.start();
|
||||
}
|
||||
@@ -57,22 +50,20 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff
|
||||
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 {
|
||||
Thread.sleep(1000 / UPDATES_PER_SECOND);
|
||||
Thread.sleep(1000 / CLIENT_UPDATES_PER_SECOND);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (GameState.getCurrentStage() == GameStages.PRE_RACE) {
|
||||
GameState.update();
|
||||
updateClients();
|
||||
}
|
||||
|
||||
//RACING
|
||||
if (GameState.getCurrentStage() == GameStages.RACING) {
|
||||
GameState.update();
|
||||
updateClients();
|
||||
}
|
||||
|
||||
@@ -81,14 +72,6 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff
|
||||
|
||||
}
|
||||
|
||||
while (!packetBuffer.isEmpty()){
|
||||
try {
|
||||
StreamPacket packet = packetBuffer.take();
|
||||
ClientPacketParser.parsePacket(packet);
|
||||
} catch (InterruptedException e) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: 14/07/17 wmu16 - Send out disconnect packet to clients
|
||||
@@ -113,11 +96,6 @@ public class MainServerThread extends Observable implements Runnable, PacketBuff
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addToBuffer(StreamPacket streamPacket) {
|
||||
return packetBuffer.add(streamPacket);
|
||||
}
|
||||
|
||||
/**
|
||||
* A client has tried to connect to the server
|
||||
* @param serverToClientThread The player that connected
|
||||
|
||||
Reference in New Issue
Block a user