package visualiser.gameController; import network.BinaryMessageDecoder; import network.MessageDecoders.BoatActionDecoder; import network.Messages.Enums.BoatActionEnum; import visualiser.gameController.Keys.ControlKey; import visualiser.gameController.Keys.KeyFactory; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; /** * Service for dispatching key press data to race from client */ public class ControllerServer implements Runnable { /** * Socket to client */ private Socket socket; /** * Wrapper for input from client */ private DataInputStream inputStream; /** * Initialise server-side controller with live client socket * @param socket to client */ public ControllerServer(Socket socket) { this.socket = socket; try { this.inputStream = new DataInputStream(this.socket.getInputStream()); } catch (IOException e) { e.printStackTrace(); } } /** * Wait for controller key input from client and loop. */ @Override public void run() { while(true) { byte[] message = new byte[20]; try { if (inputStream.available() > 0) { inputStream.read(message); BinaryMessageDecoder encodedMessage = new BinaryMessageDecoder(message); BoatActionDecoder boatActionDecoder = new BoatActionDecoder(encodedMessage.getMessageBody()); BoatActionEnum decodedMessage = boatActionDecoder.getBoatAction(); int key = decodedMessage.getValue(); System.out.println("Received key: " + key); } } catch (IOException e) { e.printStackTrace(); } } } }