aboutsummaryrefslogtreecommitdiff
path: root/src/ch/epfl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ch/epfl')
-rw-r--r--src/ch/epfl/xblast/ArgumentChecker.java29
-rw-r--r--src/ch/epfl/xblast/client/Client.java30
-rw-r--r--src/ch/epfl/xblast/client/Main.java23
-rw-r--r--src/ch/epfl/xblast/server/Main.java24
-rw-r--r--src/ch/epfl/xblast/server/Server.java30
5 files changed, 136 insertions, 0 deletions
diff --git a/src/ch/epfl/xblast/ArgumentChecker.java b/src/ch/epfl/xblast/ArgumentChecker.java
index 7e77b61..56f8acd 100644
--- a/src/ch/epfl/xblast/ArgumentChecker.java
+++ b/src/ch/epfl/xblast/ArgumentChecker.java
@@ -59,4 +59,33 @@ public final class ArgumentChecker {
59 return s; 59 return s;
60 } 60 }
61 61
62 /**
63 * Returns the element from the array at the requested index, or null if it cannot be retrieved.
64 *
65 * @param array the array
66 * @param index the index
67 * @param <T> the type of element
68 * @return the requested element, or null
69 */
70 public static <T> T getOrNull(T[] array, int index) {
71 if (Objects.isNull(array) || index < 0 || index >= array.length)
72 return null;
73 else
74 return array[index];
75 }
76
77 /**
78 * Parses and returns an integer, or return null on error.
79 *
80 * @param str the integer to parse
81 * @return the parsed integer, or null
82 */
83 public static Integer parseIntOrNull(String str) {
84 try {
85 return Integer.parseInt(str);
86 } catch (NumberFormatException | NullPointerException e) {
87 return null;
88 }
89 }
90
62} 91}
diff --git a/src/ch/epfl/xblast/client/Client.java b/src/ch/epfl/xblast/client/Client.java
new file mode 100644
index 0000000..dc08f1b
--- /dev/null
+++ b/src/ch/epfl/xblast/client/Client.java
@@ -0,0 +1,30 @@
1package ch.epfl.xblast.client;
2
3import ch.epfl.xblast.server.Server;
4
5import java.net.InetSocketAddress;
6import java.util.Optional;
7
8/**
9 * The Client class.
10 *
11 * @author Pacien TRAN-GIRARD (261948)
12 */
13public class Client {
14
15 private static final String DEFAULT_SERVER_HOST = "localhost";
16 private static final int DEFAULT_SERVER_PORT = Server.DEFAULT_PORT;
17
18 private final InetSocketAddress serverAddr;
19
20 public Client(String host, Integer port) {
21 this.serverAddr = new InetSocketAddress(
22 Optional.ofNullable(host).orElse(DEFAULT_SERVER_HOST),
23 Optional.ofNullable(port).orElse(DEFAULT_SERVER_PORT));
24 }
25
26 public void run() {
27 // TODO
28 }
29
30}
diff --git a/src/ch/epfl/xblast/client/Main.java b/src/ch/epfl/xblast/client/Main.java
new file mode 100644
index 0000000..19145c5
--- /dev/null
+++ b/src/ch/epfl/xblast/client/Main.java
@@ -0,0 +1,23 @@
1package ch.epfl.xblast.client;
2
3import ch.epfl.xblast.ArgumentChecker;
4
5/**
6 * Entry point class of the client.
7 *
8 * @author Pacien TRAN-GIRARD (261948)
9 */
10public final class Main {
11
12 private Main() {
13 // Static class
14 }
15
16 public static void main(String[] args) {
17 String host = ArgumentChecker.getOrNull(args, 0);
18 Integer port = ArgumentChecker.parseIntOrNull(ArgumentChecker.getOrNull(args, 1));
19
20 (new Client(host, port)).run();
21 }
22
23}
diff --git a/src/ch/epfl/xblast/server/Main.java b/src/ch/epfl/xblast/server/Main.java
new file mode 100644
index 0000000..98bbb3d
--- /dev/null
+++ b/src/ch/epfl/xblast/server/Main.java
@@ -0,0 +1,24 @@
1package ch.epfl.xblast.server;
2
3import ch.epfl.xblast.ArgumentChecker;
4
5/**
6 * Entry point class of the server.
7 *
8 * @author Pacien TRAN-GIRARD (261948)
9 */
10public final class Main {
11
12 private Main() {
13 // Static class
14 }
15
16 public static void main(String[] args) {
17 Integer expectedClients = ArgumentChecker.parseIntOrNull(ArgumentChecker.getOrNull(args, 0));
18 String iface = ArgumentChecker.getOrNull(args, 1);
19 Integer port = ArgumentChecker.parseIntOrNull(ArgumentChecker.getOrNull(args, 2));
20
21 (new Server(iface, port, expectedClients)).run();
22 }
23
24}
diff --git a/src/ch/epfl/xblast/server/Server.java b/src/ch/epfl/xblast/server/Server.java
new file mode 100644
index 0000000..76f332e
--- /dev/null
+++ b/src/ch/epfl/xblast/server/Server.java
@@ -0,0 +1,30 @@
1package ch.epfl.xblast.server;
2
3import ch.epfl.xblast.PlayerID;
4
5import java.net.InetSocketAddress;
6import java.util.Optional;
7
8/**
9 * The Server class.
10 *
11 * @author Pacien TRAN-GIRARD (261948)
12 */
13public class Server {
14
15 public static final int DEFAULT_PORT = 2016;
16 public static final int DEFAULT_EXPECTED_CLIENTS = PlayerID.values().length;
17
18 private final InetSocketAddress iface;
19 private final int expectedClients;
20
21 public Server(String iface, Integer port, Integer expectedClients) {
22 this.iface = new InetSocketAddress(iface, Optional.ofNullable(port).orElse(DEFAULT_PORT));
23 this.expectedClients = Optional.ofNullable(expectedClients).orElse(DEFAULT_EXPECTED_CLIENTS);
24 }
25
26 public void run() {
27 // TODO
28 }
29
30}