예제 #1
0
        public static RdmPacket ReadPacket(RdmCommands command, RdmParameters parameterId, RdmBinaryReader contentData)
        {
            RdmPacket rdmPacket = null;

            RdmHeader header = new RdmHeader();

            header.Command     = command;
            header.ParameterId = parameterId;

            rdmPacket = RdmPacket.Create(header);
            if (rdmPacket != null)
            {
                rdmPacket.ReadData(contentData);
                return(rdmPacket);
            }
            else
            {
                rdmPacket = RdmPacket.Create(header, typeof(RdmRawPacket)) as RdmRawPacket;
                if (rdmPacket != null)
                {
                    rdmPacket.ReadData(contentData);
                    return(rdmPacket);
                }
            }

            throw new UnknownRdmPacketException(header);
        }
예제 #2
0
        public static RdmPacket ReadPacket(RdmBinaryReader data)
        {
            RdmPacket rdmPacket = null;

            RdmHeader header = new RdmHeader();

            header.ReadData(data);

            rdmPacket = RdmPacket.Create(header);
            if (rdmPacket != null)
            {
                rdmPacket.ReadData(data);
                return(rdmPacket);
            }
            else
            {
                rdmPacket = RdmPacket.Create(header, typeof(RdmRawPacket)) as RdmRawPacket;
                if (rdmPacket != null)
                {
                    rdmPacket.ReadData(data);
                    return(rdmPacket);
                }
            }

            throw new UnknownRdmPacketException(header);
        }
예제 #3
0
        public static RdmRawPacket ReadPacketRaw(RdmBinaryReader data)
        {
            RdmHeader header = new RdmHeader();

            header.ReadData(data);

            RdmRawPacket rdmPacket = RdmPacket.Create(header, typeof(RdmRawPacket)) as RdmRawPacket;

            if (rdmPacket != null)
            {
                rdmPacket.ReadData(data);
            }

            return(rdmPacket);
        }
예제 #4
0
        public static bool TryReadPacket(RdmBinaryReader data, out RdmPacket rdmPacket)
        {
            RdmHeader header = new RdmHeader();

            header.ReadData(data);

            rdmPacket = RdmPacket.Create(header);
            if (rdmPacket != null)
            {
                rdmPacket.ReadData(data);
                return(true);
            }

            return(false);
        }
예제 #5
0
        public static RdmPacket BuildErrorResponse(RdmHeader header)
        {
            if (header.PortOrResponseType != 0)
            {
                switch ((RdmResponseTypes)header.PortOrResponseType)
                {
                case RdmResponseTypes.AckTimer:
                    return(RdmPacket.Create(header, typeof(RdmAckTimer)));

                case RdmResponseTypes.NackReason:
                    return(RdmPacket.Create(header, typeof(RdmNack)));
                }
            }

            return(null);
        }
예제 #6
0
        public static RdmPacket Build(RdmHeader header)
        {
            if (IsErrorResponse(header))
            {
                //Error Response Packets
                return(BuildErrorResponse(header));
            }
            else
            {
                Type packetType;
                if (packetStore.TryGetValue(new PacketKey(header.Command, header.ParameterId), out packetType))
                {
                    return(RdmPacket.Create(header, packetType));
                }
            }

            return(null);
        }