public static FramingLayer Parse(ReadOnlySpan <byte> bytes, RootLayerVector rootLayerVector) { var vector = (FramingLayerVector)BinaryPrimitives.ReadUInt32BigEndian(bytes.Slice(sizeof(UInt16))); switch (rootLayerVector) { case RootLayerVector.VECTOR_ROOT_E131_DATA: switch (vector) { case FramingLayerVector.VECTOR_E131_DATA_PACKET: return(DataPacketFramingLayer.Parse(bytes)); } break; case RootLayerVector.VECTOR_ROOT_E131_EXTENDED: switch (vector) { case FramingLayerVector.VECTOR_E131_EXTENDED_SYNCHRONIZATION: return(SynchronizationPacketFramingLayer.Parse(bytes)); case FramingLayerVector.VECTOR_E131_EXTENDED_DISCOVERY: return(UniverseDiscoveryPacketFramingLayer.Parse(bytes)); } break; } return(null); }
public static SynchronizationPacketFramingLayer Parse(ReadOnlySpan <byte> bytes) { SynchronizationPacketFramingLayer framingLayer = new SynchronizationPacketFramingLayer(); var flagsAndLength = BinaryPrimitives.ReadUInt16BigEndian(bytes); bytes = bytes.Slice(sizeof(UInt16)); framingLayer.Vector = (FramingLayerVector)BinaryPrimitives.ReadUInt32BigEndian(bytes); bytes = bytes.Slice(sizeof(UInt32)); framingLayer.SequenceNumber = bytes[0]; bytes = bytes.Slice(sizeof(byte)); framingLayer.SynchronizationAddress = BinaryPrimitives.ReadUInt16BigEndian(bytes); bytes = bytes.Slice(sizeof(UInt16)); return(framingLayer); }