/** * A getter for the high scores list. Reads it directly from file and throws an error if the file * is not found (!working on this!). * * @return Object[][] where [i][0] is the rank (String), [i][1] is the name (String) and [i][2] is * the score (Integer). */ public static Object[][] getHighScore() { if (!new File("HighScores.dat").exists()) { // This object matrix actually stores the information of the high scores list Object[][] highScores = new Object[10][3]; // We fill the high scores list with blank entries: #. " " 0 for (int i = 0; i < highScores.length; i++) { highScores[i][0] = (i + 1) + "."; highScores[i][1] = " "; highScores[i][2] = 0; } // This actually writes and makes the high scores file try { ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("HighScores.dat")); o.writeObject(highScores); o.close(); } catch (IOException e) { e.printStackTrace(); } } try { // Read and return the read object matrix ObjectInputStream o = new ObjectInputStream(new FileInputStream("HighScores.dat")); Object[][] highScores = (Object[][]) o.readObject(); o.close(); return highScores; } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } return null; }
private ConnectionData getConnectionData(Socket clientSocket, ObjectInputStream input) { ConnectionData res; try { Object o = input.readObject(); res = (ConnectionData) o; return res; } catch (IOException | ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }
/** * waitForConnection waits for incomming connections. There are two cases. If we receive a * JoinNetworkRequest it means that a new peer tries to get into the network. We lock the entire * system, and sends a ConnectionData object to the new peer, from which he can connect to every * other peer. We add this new peer to our data. * * <p>If we receive a NewPeerDataRequest, it means that a new peer has received ConnectionData * from another peer in the network, and he is now trying to connect to everyone, including me. We * then update our data with the new peer. */ private void waitForConnection() { while (active) { Socket client = waitForConnectionFromClient(); if (client != null) { try { ObjectOutputStream output = new ObjectOutputStream(client.getOutputStream()); ObjectInputStream input = new ObjectInputStream(client.getInputStream()); Object o = input.readObject(); if (o instanceof JoinNetworkRequest) { JoinNetworkRequest request = (JoinNetworkRequest) o; dec.sendObjectToAllPeers(new LockRequest(lc.getTimeStamp())); waitForAllToLock(); setLocked(true); Thread.sleep(500); int id = getNewId(); Peer p = new Peer( editor, er, id, client, output, input, lc, client.getInetAddress().getHostAddress(), request.getPort()); ConnectionData cd = new ConnectionData( er.getEventHistory(), er.getAcknowledgements(), er.getCarets(), id, area1.getText(), lc.getTimeStamp(), lc.getID(), dec.getPeers(), serverSocket.getLocalPort()); p.writeObjectToStream(cd); dec.addPeer(p); Thread t = new Thread(p); t.start(); er.addCaretPos(id, 0); } else if (o instanceof NewPeerDataRequest) { NewPeerDataRequest request = (NewPeerDataRequest) o; Peer newPeer = new Peer( editor, er, request.getId(), client, output, input, lc, client.getInetAddress().getHostAddress(), request.getPort()); dec.addPeer(newPeer); er.addCaretPos(request.getId(), request.getCaretPos()); newPeer.writeObjectToStream(new NewPeerDataAcknowledgement(lc.getTimeStamp())); Thread t = new Thread(newPeer); t.start(); } } catch (IOException | ClassNotFoundException | InterruptedException e) { e.printStackTrace(); } } } }