mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
5e3ae40d03
- Added unit tests - Added documentation for discovery classes - Improved error handling Tags: #story[1281]
61 lines
2.0 KiB
Java
61 lines
2.0 KiB
Java
package seng302.gameServer.messages;
|
|
|
|
import seng302.discoveryServer.util.ServerListing;
|
|
|
|
public class ServerRegistrationMessage extends Message {
|
|
private int size;
|
|
|
|
public ServerRegistrationMessage(ServerListing serverListing) {
|
|
String serverName = serverListing.getServerName();
|
|
String mapName = serverListing.getMapName();
|
|
String address = serverListing.getAddress();
|
|
int port = serverListing.getPortNumber();
|
|
int players = serverListing.getPortNumber();
|
|
int capacity = serverListing.getCapacity();
|
|
String roomCode = serverListing.getRoomCode();
|
|
|
|
createMessage(serverName, mapName, address, port, players, capacity, roomCode);
|
|
}
|
|
|
|
@Override
|
|
public int getSize() {
|
|
return size;
|
|
}
|
|
|
|
public ServerRegistrationMessage(String serverName, String mapName, String address, int port, int players, int capacity, String roomCode){
|
|
createMessage(serverName, mapName, address, port, players, capacity, roomCode);
|
|
}
|
|
|
|
private void createMessage(String serverName, String mapName, String address, int port, int players, int capacity, String roomCode){
|
|
size = serverName.getBytes().length + mapName.length() + address.length() + roomCode.length() + 36;
|
|
|
|
setHeader(new Header(MessageType.REPO_REGISTRATION_REQUEST, 0x01, (short) getSize()));
|
|
allocateBuffer();
|
|
writeHeaderToBuffer();
|
|
|
|
int nameLength = serverName.length();
|
|
int mapNameLength = mapName.length();
|
|
int addressLength = address.length();
|
|
int roomCodeLength = roomCode.length();
|
|
|
|
// Put fields here
|
|
putInt(nameLength, 6);
|
|
putInt(mapNameLength, 6);
|
|
putInt(addressLength, 6);
|
|
putInt(roomCodeLength, 6);
|
|
|
|
putInt(port, 4);
|
|
putInt(players, 4);
|
|
putInt(capacity, 4);
|
|
|
|
putBytes(serverName.getBytes());
|
|
putBytes(mapName.getBytes());
|
|
putBytes(address.getBytes());
|
|
putBytes(roomCode.getBytes());
|
|
|
|
writeCRC();
|
|
rewind();
|
|
}
|
|
|
|
}
|