Coverage Summary for Class: WelcomeServer (it.polimi.ingsw.Server)
Class |
Class, %
|
Method, %
|
Line, %
|
WelcomeServer |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/15)
|
1 package it.polimi.ingsw.Server;
2
3 import it.polimi.ingsw.Logger;
4 import it.polimi.ingsw.Network.KeepAliveSocketWrapper;
5 import it.polimi.ingsw.Network.SocketWrapper;
6 import it.polimi.ingsw.Server.Messages.ServerResponses.Welcome;
7
8 import java.io.IOException;
9 import java.net.InetAddress;
10 import java.net.ServerSocket;
11 import java.net.Socket;
12
13 /**
14 * This is the main server thread. <br>
15 * Expected behaviour: a thread runs forever, accepting all connections and dispatching the
16 * sockets to the {@link LobbyServer}.
17 */
18 public class WelcomeServer implements Runnable {
19 private final ServerSocket serverSocket;
20
21 /**
22 * Create a new Welcome server, once run the server binds to an address and listens for connections
23 *
24 * @param port the port the server will bind to
25 * @param address the address the server will bind to
26 */
27 public WelcomeServer(int port, InetAddress address) {
28 Logger.info("Starting Welcome Server on: " + address + ":" + port);
29 try {
30 this.serverSocket = new ServerSocket(port, 1000, address);
31 } catch (IOException e) {
32 throw new RuntimeException(e.getMessage());
33 }
34 }
35
36 /**
37 * Used when running the server in a {@link Thread}, will make the server listen for connections, dispatching a
38 * {@link LobbyServer} for each new connection.
39 */
40 @Override
41 public void run() {
42 Logger.info("Server initialized and listening for new connections");
43 while (true) {
44 try {
45 Socket socket = serverSocket.accept();
46 SocketWrapper sw = new KeepAliveSocketWrapper(socket, 5000, false);
47 Logger.info("New connection from: " + sw.getInetAddress());
48 sw.sendMessage(new Welcome());
49 LobbyServer.spawn(sw);
50 } catch (IOException e) {
51 Logger.severe("Caught an exception while awaiting new connections:\n" + e.getMessage());
52 return;
53 }
54 }
55 }
56 }