Skip to content

Commit dd1b026

Browse files
committed
Convert ServerInfo from record to class and add mutator methods, update tests to validate server/player updates
1 parent 5a6ba5c commit dd1b026

2 files changed

Lines changed: 129 additions & 1 deletion

File tree

src/main/java/com/gportal/a2s/ServerInfo.java

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,116 @@
77

88
import io.netty.buffer.ByteBuf;
99

10-
public record ServerInfo(InetSocketAddress queryAddress, byte protocol, String name, String map, String folder, String game, short appId, byte players, byte maxPlayers, byte bots, char serverType, char environment, boolean password, boolean vac, String version, Short port, Long steamId, Short tvPort, String tvName, String config, Long gameId) {
10+
public class ServerInfo {
11+
private InetSocketAddress queryAddress;
12+
private byte protocol;
13+
private String name;
14+
private String map;
15+
private String folder;
16+
private String game;
17+
private short appId;
18+
private byte players;
19+
private byte maxPlayers;
20+
private byte bots;
21+
private char serverType;
22+
private char environment;
23+
private boolean password;
24+
private boolean vac;
25+
private String version;
26+
private Short port;
27+
private Long steamId;
28+
private Short tvPort;
29+
private String tvName;
30+
private String config;
31+
private Long gameId;
32+
33+
public ServerInfo(InetSocketAddress queryAddress, byte protocol, String name, String map, String folder, String game, short appId, byte players, byte maxPlayers, byte bots, char serverType, char environment, boolean password, boolean vac, String version, Short port, Long steamId, Short tvPort, String tvName, String config, Long gameId) {
34+
this.queryAddress = queryAddress;
35+
this.protocol = protocol;
36+
this.name = name;
37+
this.map = map;
38+
this.folder = folder;
39+
this.game = game;
40+
this.appId = appId;
41+
this.players = players;
42+
this.maxPlayers = maxPlayers;
43+
this.bots = bots;
44+
this.serverType = serverType;
45+
this.environment = environment;
46+
this.password = password;
47+
this.vac = vac;
48+
this.version = version;
49+
this.port = port;
50+
this.steamId = steamId;
51+
this.tvPort = tvPort;
52+
this.tvName = tvName;
53+
this.config = config;
54+
this.gameId = gameId;
55+
}
56+
57+
public InetSocketAddress queryAddress() { return queryAddress; }
58+
public void setQueryAddress(InetSocketAddress queryAddress) { this.queryAddress = queryAddress; }
59+
60+
public byte protocol() { return protocol; }
61+
public void setProtocol(byte protocol) { this.protocol = protocol; }
62+
63+
public String name() { return name; }
64+
public void setName(String name) { this.name = name; }
65+
66+
public String map() { return map; }
67+
public void setMap(String map) { this.map = map; }
68+
69+
public String folder() { return folder; }
70+
public void setFolder(String folder) { this.folder = folder; }
71+
72+
public String game() { return game; }
73+
public void setGame(String game) { this.game = game; }
74+
75+
public short appId() { return appId; }
76+
public void setAppId(short appId) { this.appId = appId; }
77+
78+
public byte players() { return players; }
79+
public void setPlayers(byte players) { this.players = players; }
80+
81+
public byte maxPlayers() { return maxPlayers; }
82+
public void setMaxPlayers(byte maxPlayers) { this.maxPlayers = maxPlayers; }
83+
84+
public byte bots() { return bots; }
85+
public void setBots(byte bots) { this.bots = bots; }
86+
87+
public char serverType() { return serverType; }
88+
public void setServerType(char serverType) { this.serverType = serverType; }
89+
90+
public char environment() { return environment; }
91+
public void setEnvironment(char environment) { this.environment = environment; }
92+
93+
public boolean password() { return password; }
94+
public void setPassword(boolean password) { this.password = password; }
95+
96+
public boolean vac() { return vac; }
97+
public void setVac(boolean vac) { this.vac = vac; }
98+
99+
public String version() { return version; }
100+
public void setVersion(String version) { this.version = version; }
101+
102+
public Short port() { return port; }
103+
public void setPort(Short port) { this.port = port; }
104+
105+
public Long steamId() { return steamId; }
106+
public void setSteamId(Long steamId) { this.steamId = steamId; }
107+
108+
public Short tvPort() { return tvPort; }
109+
public void setTvPort(Short tvPort) { this.tvPort = tvPort; }
110+
111+
public String tvName() { return tvName; }
112+
public void setTvName(String tvName) { this.tvName = tvName; }
113+
114+
public String config() { return config; }
115+
public void setConfig(String config) { this.config = config; }
116+
117+
public Long gameId() { return gameId; }
118+
public void setGameId(Long gameId) { this.gameId = gameId; }
119+
11120
public InetSocketAddress gameAddress() { return new InetSocketAddress(queryAddress().getAddress(), port()); }
12121
public static ServerInfo read(InetSocketAddress queryAddress, ByteBuf buffer) {
13122
byte protocol = buffer.readByte();

src/test/java/TestQueryServer.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,25 @@ public void testQueryRules() throws UnknownHostException, InterruptedException,
4141
System.out.println(client.queryRules(new InetSocketAddress(InetAddress.getLocalHost(), 27017)).get(5000, TimeUnit.MILLISECONDS));
4242
}
4343

44+
@Test
45+
public void testUpdateServerInfoAndPlayers() throws UnknownHostException, InterruptedException, ExecutionException, TimeoutException {
46+
InetSocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(), 27017);
47+
48+
ServerInfo info = client.queryServer(address).get(5000, TimeUnit.MILLISECONDS);
49+
assert info.players() == (byte) 4;
50+
java.util.List<PlayerInfo> players = client.queryPlayers(address).get(5000, TimeUnit.MILLISECONDS);
51+
assert players.size() == 1;
52+
53+
server.players.add(new PlayerInfo((byte)1, "NewPlayer", (short)100, 10f));
54+
server.info.setPlayers((byte) 5);
55+
56+
info = client.queryServer(address).get(5000, TimeUnit.MILLISECONDS);
57+
assert info.players() == 5;
58+
players = client.queryPlayers(address).get(5000, TimeUnit.MILLISECONDS);
59+
assert players.size() == 2;
60+
assert players.get(1).name().equals("NewPlayer");
61+
}
62+
4463
@AfterAll
4564
public static void cleanUp() {
4665
client.shutdown();

0 commit comments

Comments
 (0)