package se.sics.gvod.video.msgs; import io.netty.buffer.ByteBuf; import java.util.Set; import se.sics.gvod.common.msgs.MessageDecodingException; import se.sics.gvod.common.msgs.DirectMsgNettyFactory; import se.sics.gvod.net.msgs.DirectMsg; import se.sics.gvod.net.util.UserTypesDecoderFactory; import se.sics.gvod.net.util.VideoTypesDecoderFactory; public class VideoPieceMsgFactory { public static class Advertisement extends DirectMsgNettyFactory.Oneway { Advertisement() { } public static VideoPieceMsg.Advertisement fromBuffer(ByteBuf buffer) throws MessageDecodingException { return (VideoPieceMsg.Advertisement) new VideoPieceMsgFactory.Advertisement().decode(buffer); } @Override protected VideoPieceMsg.Advertisement process(ByteBuf buffer) throws MessageDecodingException { Set<Integer> piecesIds = UserTypesDecoderFactory.readIntegerSet(buffer); return new VideoPieceMsg.Advertisement(vodSrc, vodDest, piecesIds); } } public static class Request extends DirectMsgNettyFactory.Request { private Request() { } public static VideoPieceMsg.Request fromBuffer(ByteBuf buffer) throws MessageDecodingException { return (VideoPieceMsg.Request) new VideoPieceMsgFactory.Request().decode(buffer); } @Override protected VideoPieceMsg.Request process(ByteBuf buffer) throws MessageDecodingException { Set<Integer> piecesIds = UserTypesDecoderFactory.readIntegerSet(buffer); return new VideoPieceMsg.Request(vodSrc, vodDest, piecesIds); } } public static class Response extends DirectMsgNettyFactory.Response { private Response() { } public static VideoPieceMsg.Response fromBuffer(ByteBuf buffer) throws MessageDecodingException { return (VideoPieceMsg.Response) new VideoPieceMsgFactory.Response().decode(buffer); } @Override protected VideoPieceMsg.Response process(ByteBuf buffer) throws MessageDecodingException { EncodedSubPiece esp = VideoTypesDecoderFactory.readEncodedSubPiece(buffer); return new VideoPieceMsg.Response(vodSrc, vodDest, timeoutId, esp); } } };