Animatroller.DMXrecorder.AcnRecorder.AcnSocket_NewPacket C# (CSharp) Method

AcnSocket_NewPacket() private method

private AcnSocket_NewPacket ( object sender, Acn e ) : void
sender object
e Acn
return void
        private void AcnSocket_NewPacket(object sender, Acn.Sockets.NewPacketEventArgs<Acn.Packets.sAcn.StreamingAcnDmxPacket> e)
        {
            var propData = e.Packet.Dmx.PropertyData;
            if (propData.Length < 1)
                // Unknown/unsupported
                return;

            if (propData[0] != 0)
                // We only support start code 0
                return;

            var newDmxData = e.Packet.Dmx.PropertyData;

            UniverseData universeData;
            if (!this.universes.TryGetValue(e.Packet.Framing.Universe, out universeData))
                // Unknown universe
                return;

            long sequence = e.Packet.Framing.SequenceNumber + universeData.SequenceHigh;
            if (e.Packet.Framing.SequenceNumber < universeData.LastSequenceLow)
            {
                // Wrap
                universeData.SequenceHigh += 256;
                sequence += 256;
            }
            universeData.LastSequenceLow = e.Packet.Framing.SequenceNumber;

            if (this.timestamper == null)
                this.timestamper = Stopwatch.StartNew();

            var dmxData = RawDmxData.Create(
                millisecond: this.timestamper.ElapsedMilliseconds,
                sequence: sequence,
                universe: e.Packet.Framing.Universe,
                data: newDmxData.Skip(1).ToArray());

            this.writer.AddData(dmxData);
        }