package se.sics.gvod.gradient.msgs;
import io.netty.buffer.ByteBuf;
import java.util.List;
import se.sics.gvod.common.Utility;
import se.sics.gvod.common.VodDescriptor;
import se.sics.gvod.common.msgs.MessageDecodingException;
import se.sics.gvod.common.msgs.RelayMsgNettyFactory;
import se.sics.gvod.net.VodAddress;
import se.sics.gvod.net.msgs.RewriteableMsg;
import se.sics.gvod.net.util.UserTypesDecoderFactory;
public class GradientSearchMsgFactory {
public static class Request extends RelayMsgNettyFactory.Request {
Request() {
}
public static GradientSearchMsg.Request fromBuffer(ByteBuf buffer)
throws MessageDecodingException {
return (GradientSearchMsg.Request)
new GradientSearchMsgFactory.Request().decode(buffer);
}
@Override
protected RewriteableMsg process(ByteBuf buffer) throws MessageDecodingException {
int ttl = UserTypesDecoderFactory.readUnsignedIntAsOneByte(buffer);
Utility targetUtility = UserTypesDecoderFactory.readUtility(buffer);
VodAddress origSrc = UserTypesDecoderFactory.readVodAddress(buffer);
return new GradientSearchMsg.Request(gvodSrc, gvodDest, origSrc,
timeoutId, targetUtility,
ttl);
}
}
public static class Response extends RelayMsgNettyFactory.Response {
private Response() {
}
public static GradientSearchMsg.Response fromBuffer(ByteBuf buffer)
throws MessageDecodingException {
return (GradientSearchMsg.Response)
new GradientSearchMsgFactory.Response().decode(buffer);
}
@Override
protected RewriteableMsg process(ByteBuf buffer) throws MessageDecodingException {
List<VodDescriptor> similarSet = UserTypesDecoderFactory.readListVodNodeDescriptors(buffer);
return new GradientSearchMsg.Response(gvodSrc, gvodDest, clientId, remoteId,
nextDest, timeoutId, similarSet);
}
}
};