package com.github.czyzby.shared.serialization;
import com.badlogic.gdx.utils.Array;
import com.github.czyzby.websocket.serialization.ArrayProvider;
import com.github.czyzby.websocket.serialization.SerializationException;
import com.github.czyzby.websocket.serialization.Transferable;
import com.github.czyzby.websocket.serialization.impl.Deserializer;
import com.github.czyzby.websocket.serialization.impl.Serializer;
import com.github.czyzby.websocket.serialization.impl.Size;
/** Client list message packet using gdx-websocket-serialization.
*
* @author MJ */
public class ClientListMessage implements Transferable<ClientListMessage> {
/** Utility for deserializing. */
private final static ClientMessage MOCK_UP_PACKET = new ClientMessage(null);
private final static ArrayProvider<ClientMessage> PROVIDER = new ArrayProvider<ClientMessage>() {
@Override
public ClientMessage[] getArray(final int size) {
return new ClientMessage[size];
}
};
private final Array<ClientMessage> messages;
public ClientListMessage(final Array<ClientMessage> messages) {
this.messages = messages;
}
@Override
public void serialize(final Serializer serializer) throws SerializationException {
// Assuming no nulls and no more than Short#MAX_VALUE elements.
serializer.serializeTransferableArray(messages.items, 0, messages.size, Size.SHORT);
}
@Override
public ClientListMessage deserialize(final Deserializer deserializer) throws SerializationException {
return new ClientListMessage(new Array<ClientMessage>(
deserializer.deserializeTransferableArray(MOCK_UP_PACKET, PROVIDER, Size.SHORT)));
}
public Array<ClientMessage> getMessages() {
return messages;
}
}