Commit 329be61b authored by Trisha Gee's avatar Trisha Gee
Browse files

[AppA] Modernising MusicServer code a little. Slightly clearer naming, no...

[AppA] Modernising MusicServer code a little. Slightly clearer naming, no IntelliJ warnings of unnecessary code, replacing iterator with enhanced for.
parent 144c0b6d
Loading
Loading
Loading
Loading
+25 −35
Changes for src/main/java/appA/MusicServer.java: 25 added lines, 35 removed lines.
Original line number Diff line number Diff line
@@ -6,82 +6,72 @@ import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MusicServer {

  ArrayList<ObjectOutputStream> clientOutputStreams;
  final List<ObjectOutputStream> clientOutputStreams = new ArrayList<>();

  public static void main(String[] args) {
    new MusicServer().go();
  }

  public class ClientHandler implements Runnable {

    ObjectInputStream in;
    Socket clientSocket;
    private ObjectInputStream in;

    public ClientHandler(Socket socket) {
      try {
        clientSocket = socket;
        in = new ObjectInputStream(clientSocket.getInputStream());

        in = new ObjectInputStream(socket.getInputStream());
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    } // close constructor

    }

    public void run() {
      Object o2 = null;
      Object o1 = null;
      Object userName;
      Object beatSequence;
      try {

        while ((o1 = in.readObject()) != null) {

          o2 = in.readObject();
        while ((userName = in.readObject()) != null) {
          beatSequence = in.readObject();

          System.out.println("read two objects");
          tellEveryone(o1, o2);
        } // close while

          tellEveryone(userName, beatSequence);
        }
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    } // close run
  } // close inner class      
    }
  }

  public void go() {
    clientOutputStreams = new ArrayList<ObjectOutputStream>();

    try {
      ServerSocket serverSock = new ServerSocket(4242);
      ExecutorService threadPool = Executors.newCachedThreadPool();

      while (true) {
      while (!serverSock.isClosed()) {
        Socket clientSocket = serverSock.accept();
        ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
        clientOutputStreams.add(out);

        Thread t = new Thread(new ClientHandler(clientSocket));
        t.start();

        ClientHandler clientHandler = new ClientHandler(clientSocket);
        threadPool.execute(clientHandler);
        System.out.println("got a connection");
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  } // close go
  }

  public void tellEveryone(Object one, Object two) {
    Iterator it = clientOutputStreams.iterator();
    while (it.hasNext()) {
    for (ObjectOutputStream clientOutputStream : clientOutputStreams) {
      try {
        ObjectOutputStream out = (ObjectOutputStream) it.next();
        out.writeObject(one);
        out.writeObject(two);
        clientOutputStream.writeObject(one);
        clientOutputStream.writeObject(two);
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
  } // close tellEveryone
  }

} // close class       
 No newline at end of file
}
 No newline at end of file