コード例 #1
0
        private static CitpPacket BuildFSel(CitpRecieveData data)
        {
            FSelHeader header = new FSelHeader(string.Empty);

            header.ReadData(data.GetReader());

            CitpPacket packet = null;

            switch (header.ContentType)
            {
            case FSelSelect.PacketType:
                packet = new FSelSelect();
                break;

            case FSelDeselect.PacketType:
                packet = new FSelDeselect();
                break;

            default:
                return(null);
            }

            packet.ReadData(data.GetReader());
            return(packet);
        }
コード例 #2
0
        private static CitpPacket BuildFPtc(CitpRecieveData data)
        {
            FPtcHeader header = new FPtcHeader(string.Empty);

            header.ReadData(data.GetReader());

            CitpPacket packet = null;

            switch (header.ContentType)
            {
            case FPtcPatch.PacketType:
                packet = new FPtcPatch();
                break;

            case FPtcUnpatch.PacketType:
                packet = new FPtcUnpatch();
                break;

            case FPtcSendPatch.PacketType:
                packet = new FPtcSendPatch();
                break;

            default:
                return(null);
            }

            packet.ReadData(data.GetReader());
            return(packet);
        }
コード例 #3
0
        private static CitpPacket BuildSDmx(CitpReceiveData data)
        {
            SDmxHeader header = new SDmxHeader(string.Empty);

            header.ReadData(data.GetReader());

            CitpPacket packet = null;

            switch (header.ContentType)
            {
            case SDmxEncryptionIdentifier.PacketType:
                packet = new SDmxEncryptionIdentifier();
                break;

            case SDmxUniverseName.PacketType:
                packet = new SDmxUniverseName();
                break;

            case SDmxChannelBlock.PacketType:
                packet = new SDmxChannelBlock();
                break;

            case SDmxSetExternalSource.PacketType:
                packet = new SDmxSetExternalSource();
                break;

            default:
                return(null);
            }

            packet.ReadData(data.GetReader());
            return(packet);
        }
コード例 #4
0
        private static CitpPacket BuildCaEx(CitpReceiveData data)
        {
            CaExHeader header = new CaExHeader(0x0);

            header.ReadData(data.GetReader());

            CitpPacket packet = null;

            switch (header.ContentCode)
            {
            case CaExContentCodes.Nack:
                packet = new CaExNack();
                break;

            case CaExContentCodes.GetLiveViewStatus:
                packet = new CaExGetLiveViewStatus();
                break;

            case CaExContentCodes.LiveViewStatus:
                packet = new CaExLiveViewStatus();
                break;

            case CaExContentCodes.GetLiveViewImage:
                packet = new CaExGetLiveViewImage();
                break;

            case CaExContentCodes.LiveViewImage:
                packet = new CaExLiveViewImage();
                break;

            case CaExContentCodes.SetCueRecordingCapabilities:
                packet = new CaExSetCueRecordingCapabilities();
                break;

            case CaExContentCodes.RecordCue:
                packet = new CaExRecordCue();
                break;

            case CaExContentCodes.SetRecorderClearingCapabilities:
                packet = new CaExSetRecorderClearingCapabilities();
                break;

            case CaExContentCodes.ClearRecorder:
                packet = new CaExClearRecorder();
                break;

            default:
                return(null);
            }

            packet.ReadData(data.GetReader());
            return(packet);
        }
コード例 #5
0
        private static CitpPacket BuildCaEx(CitpRecieveData data)
        {
            CaExHeader header = new CaExHeader(0x0);

            header.ReadData(data.GetReader());

            CitpPacket packet = null;

            switch (header.ContentCode)
            {
            case CaExContentCodes.Nack:
                packet = new CaExNack();
                break;

            case CaExContentCodes.GetLiveViewStatus:
                packet = new CaExGetLiveViewStatus();
                break;

            case CaExContentCodes.LiveViewStatus:
                packet = new CaExLiveViewStatus();
                break;

            case CaExContentCodes.GetLiveViewImage:
                packet = new CaExGetLiveViewImage();
                break;

            case CaExContentCodes.LiveViewImage:
                packet = new CaExLiveViewImage();
                break;

            case CaExContentCodes.SetCueRecordingCapabilities:
                packet = new CaExSetCueRecordingCapabilities();
                break;

            case CaExContentCodes.RecordCue:
                packet = new CaExRecordCue();
                break;

            case CaExContentCodes.SetRecorderClearingCapabilities:
                packet = new CaExSetRecorderClearingCapabilities();
                break;

            case CaExContentCodes.ClearRecorder:
                packet = new CaExClearRecorder();
                break;

            case CaExContentCodes.EnterShow:
                packet = new CaExEnterShow();
                break;

            case CaExContentCodes.LeaveShow:
                packet = new CaExLeaveShow();
                break;

            case CaExContentCodes.FixtureConsoleStatus:
                packet = new CaExFixtureConsoleStatus();
                break;

            case CaExContentCodes.FixtureListRequest:
                packet = new CaExFixtureListRequest();
                break;

            case CaExContentCodes.FixtureList:
                packet = new CaExFixtureList();
                break;

            case CaExContentCodes.FixtureModify:
                packet = new CaExFixtureModify();
                break;

            case CaExContentCodes.FixtureRemove:
                packet = new CaExFixtureRemove();
                break;

            case CaExContentCodes.FixtureSelection:
                packet = new CaExFixtureSelection();
                break;

            case CaExContentCodes.FixtureIdentify:
                packet = new CaExFixtureIdentify();
                break;

            case CaExContentCodes.GetLaserFeedList:
                //Not implemented yet, left here as placeholder.
                return(null);

            default:
                return(null);
            }

            packet.ReadData(data.GetReader());
            return(packet);
        }
コード例 #6
0
        internal static bool TryBuild(CitpRecieveData data, out CitpPacket packet)
        {
            CitpHeader header = new CitpHeader(string.Empty);

            packet = header;

            try
            {
                //We have read all the data.
                if (data.EndOfData())
                {
                    data.Reset();
                    return(false);
                }

                //Check we have enough data to construct the header.
                if (data.Length - data.ReadPosition < CitpHeader.PacketSize)
                {
                    return(false);
                }

                //Read the packet header.
                header.ReadData(data.GetReader());

                //Ensure the header packet is valid
                if (!header.IsValid())
                {
                    //Purge data as it is probably corrupted.
                    data.Reset();        //Reset position to start so we dump the data.
                    return(false);
                }

                //Read the sub packet
                switch (header.ContentType)
                {
                case CitpPInfHeader.PacketType:
                    packet = BuildPInf(data);
                    break;

                case SDmxHeader.PacketType:
                    packet = BuildSDmx(data);
                    break;

                case FPtcHeader.PacketType:
                    packet = BuildFPtc(data);
                    break;

                case FSelHeader.PacketType:
                    packet = BuildFSel(data);
                    break;

                case CitpMsexHeader.PacketType:
                    packet = BuildMsex(data);
                    break;

                case CaExHeader.PacketType:
                    packet = BuildCaEx(data);
                    break;

                case FInfHeader.PacketType:
                    packet = BuildFInf(data);
                    break;

                default:
                    packet = null;
                    break;
                }

                //Advance the read and write pointers past the successfully read packet.
                data.ReadPosition += header.MessageSize;
            }
            catch (EndOfStreamException)
            {
                return(false);
            }

            //We have managed to read the packet even if it was unknown and set to null so lets return true
            return(true);
        }
コード例 #7
0
        internal static bool TryBuild(CitpReceiveData data, out CitpPacket packet)
        {
            CitpHeader header = new CitpHeader(string.Empty);

            packet = header;

            try
            {
                //We have read all the data.
                if (data.EndOfData())
                {
                    data.Reset();
                    return(false);
                }

                //Check we have enough data to construct the header.
                if (data.Length - data.ReadPosition < CitpHeader.PacketSize)
                {
                    return(false);
                }

                //Read the packet header.
                header.ReadData(data.GetReader());

                //Ensure the header packet is valid
                if (!header.IsValid())
                {
                    //Purge data as it is probably corrupted.
                    data.Reset();        //Reset position to start so we dump the data.
                    return(false);
                }

                //Read the sub packet
                switch (header.ContentType)
                {
                case CitpPInfHeader.PacketType:
                    packet = BuildPInf(data);
                    break;

                case SDmxHeader.PacketType:
                    packet = BuildSDmx(data);
                    break;

                case FPtcHeader.PacketType:
                    packet = BuildFPtc(data);
                    break;

                case FSelHeader.PacketType:
                    packet = BuildFSel(data);
                    break;

                case CitpMsexHeader.PacketType:
                    packet = BuildMsex(data);
                    break;

                case CaExHeader.PacketType:
                    packet = BuildCaEx(data);
                    break;

                default:
                    return(false);
                }
            }
            catch (EndOfStreamException)
            {
                return(false);
            }

            return(packet != null);
        }