package se.sics.gvod.interas.msgs;
import io.netty.buffer.ByteBuf;
import se.sics.gvod.common.VodDescriptor;
import java.util.List;
import se.sics.gvod.common.msgs.MessageDecodingException;
import se.sics.gvod.common.msgs.RelayMsgNettyFactory;
import se.sics.gvod.net.msgs.RewriteableMsg;
import se.sics.gvod.net.util.UserTypesDecoderFactory;
public class InterAsGossipMsgFactory {
public static class Request extends RelayMsgNettyFactory.Request {
Request() {
}
public static InterAsGossipMsg.Request fromBuffer(ByteBuf buffer)
throws MessageDecodingException {
return (InterAsGossipMsg.Request)
new InterAsGossipMsgFactory.Request().decode(buffer);
}
@Override
protected RewriteableMsg process(ByteBuf buffer) throws MessageDecodingException {
return new InterAsGossipMsg.Request(gvodSrc, gvodDest, timeoutId);
}
}
public static class Response extends RelayMsgNettyFactory.Response {
private Response() {
}
public static InterAsGossipMsg.Response fromBuffer(ByteBuf buffer)
throws MessageDecodingException {
return (InterAsGossipMsg.Response)
new InterAsGossipMsgFactory.Response().decode(buffer);
}
@Override
protected RewriteableMsg process(ByteBuf buffer) throws MessageDecodingException {
List<VodDescriptor> asNeighbours = UserTypesDecoderFactory.readListVodNodeDescriptors(buffer);
return new InterAsGossipMsg.Response(gvodSrc, gvodDest, nextDest, timeoutId,
asNeighbours);
}
}
};