package com.skcraft.playblock.network;
import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream;
import java.io.IOException;
import com.sk89q.forge.Payload;
import com.sk89q.forge.RequestResponse;
import com.skcraft.playblock.media.Media;
import com.skcraft.playblock.util.IOUtils;
/**
* A server -> client response to an {@link Enqueue}.
*/
public class EnqueueResponse implements Payload, RequestResponse<EnqueueResponse> {
public enum Response {
OK, ERROR_NO_QUEUE, ERROR_UNKNOWN_LENGTH, ERROR_TOO_LONG, ERROR_TOO_SHORT, ERROR_INTERNAL
}
private short callId;
private Response response;
private String uri;
public EnqueueResponse() {
}
public EnqueueResponse(Response response, Media media) {
setResponse(response);
setMedia(media);
}
@Override
public short getCallId() {
return callId;
}
@Override
public void setCallId(short id) {
this.callId = id;
}
public Response getResponse() {
return response;
}
public void setResponse(Response response) {
this.response = response;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public void setMedia(Media media) {
setUri(media.getUri());
}
@Override
public void read(ByteBufInputStream in) throws IOException {
setCallId(in.readByte());
setResponse(IOUtils.resolveOrdinal(Response.class, in.readByte()));
setUri(in.readUTF());
}
@Override
public void write(ByteBufOutputStream out) throws IOException {
out.writeByte(getCallId());
out.writeByte(getResponse().ordinal());
out.writeUTF(getUri());
}
}