You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.5 KiB
68 lines
1.5 KiB
package network.MessageDecoders;
|
|
|
|
|
|
import network.Exceptions.InvalidMessageException;
|
|
import network.Messages.AC35Data;
|
|
import network.Messages.Enums.RequestToJoinEnum;
|
|
import network.Messages.RequestToJoin;
|
|
import network.Utils.ByteConverter;
|
|
|
|
import java.util.Arrays;
|
|
|
|
/**
|
|
* Decoder for {@link network.Messages.RequestToJoin} messages.
|
|
*/
|
|
public class RequestToJoinDecoder implements MessageDecoder{
|
|
|
|
/**
|
|
* The encoded message.
|
|
*/
|
|
private byte[] encodedRequest;
|
|
|
|
/**
|
|
* The decoded message.
|
|
*/
|
|
private RequestToJoin message;
|
|
|
|
/**
|
|
* Constructs a decoder to decode a given message.
|
|
*/
|
|
public RequestToJoinDecoder() {
|
|
}
|
|
|
|
|
|
@Override
|
|
public AC35Data decode(byte[] encodedRequest) throws InvalidMessageException {
|
|
this.encodedRequest = encodedRequest;
|
|
|
|
try {
|
|
|
|
//Request type is first four bytes.
|
|
byte[] requestTypeBytes = Arrays.copyOfRange(encodedRequest, 0, 4);
|
|
|
|
//Request type is an integral type.
|
|
int requestTypeInt = ByteConverter.bytesToInt(requestTypeBytes);
|
|
RequestToJoinEnum requestType = RequestToJoinEnum.fromInt(requestTypeInt);
|
|
|
|
|
|
message = new RequestToJoin(requestType);
|
|
|
|
return message;
|
|
|
|
} catch (Exception e) {
|
|
throw new InvalidMessageException("Could not decode RequestToJoin message.", e);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Returns the decoded message.
|
|
* @return The decoded message.
|
|
*/
|
|
public RequestToJoin getMessage() {
|
|
return message;
|
|
}
|
|
|
|
|
|
}
|