#define TRACE using System; using System.CodeDom.Compiler; using System.Diagnostics; using System.IO; using System.Xml.Serialization; using ArchestrAServices.Common; using ArchestrAServices.Contract; namespace ArchestrAServices.ASBContract; [Serializable] [GeneratedCode("System.Xml", "4.0.30319.18054")] [DebuggerStepThrough] [XmlType(Namespace = "http://asb.contracts.idata.data/20111111")] internal struct Variant : IASBCustomSerializableType { private ushort typeField; private int lengthField; private byte[] payloadField; public ushort Type { get { return typeField; } set { typeField = value; } } public int Length { get { return lengthField; } set { lengthField = value; } } [XmlElement(DataType = "base64Binary", IsNullable = true)] public byte[] Payload { get { return payloadField; } set { payloadField = value; } } public void WriteToStream(BinaryWriter writer) { if (writer == null) { return; } try { writer.Write(typeField); writer.Write(lengthField); if (payloadField != null) { writer.Write((uint)payloadField.Length); writer.Write(payloadField); } else { writer.Write(0u); } } catch (Exception ex) { SvcTrace.DiagDiagnostics.TraceEvent(TraceEventType.Error, 0, $" Variant: WriteTo. Exception raised {ex.Message} \n Stack Trace: {ex.StackTrace}"); } } public void InitializeFromStream(BinaryReader reader) { if (!MemoryStreamHelper.ValidateStream(reader)) { return; } try { typeField = reader.ReadUInt16(); lengthField = reader.ReadInt32(); int num = reader.ReadInt32(); if (num > 0) { payloadField = reader.ReadBytes(num); } else { payloadField = null; } } catch (Exception ex) { SvcTrace.DiagDiagnostics.TraceEvent(TraceEventType.Error, 0, $" Variant: InitializeFrom. Exception raised {ex.Message} \n Stack Trace: {ex.StackTrace}"); } } public object InitializeArrayFromStream(BinaryReader reader, int arrayCnt) { object result = null; if (MemoryStreamHelper.ValidateStream(reader, arrayCnt)) { try { Variant[] array = new Variant[arrayCnt]; for (int i = 0; i < arrayCnt; i++) { InitializeFrom(reader, ref array[i]); } result = array; } catch (Exception ex) { SvcTrace.DiagDiagnostics.TraceEvent(TraceEventType.Error, 0, $" InitializeFromArray: InitializeFromArray. Exception raised {ex.Message} \n Stack Trace: {ex.StackTrace}"); } } return result; } public void WriteArrayToStream(object graph, ref BinaryWriter bw) { if (graph == null || bw == null) { return; } try { if (graph is Variant[] array) { bw.Write(array.Length); Variant[] array2 = array; foreach (Variant variant in array2) { variant.WriteToStream(bw); } } } catch (Exception ex) { SvcTrace.DiagDiagnostics.TraceEvent(TraceEventType.Error, 0, $" Variant: WriteArrayTo. Exception raised {ex.Message} \n Stack Trace: {ex.StackTrace}"); } } private static void InitializeFrom(BinaryReader reader, ref Variant result) { if (MemoryStreamHelper.ValidateStream(reader)) { result.typeField = reader.ReadUInt16(); result.lengthField = reader.ReadInt32(); int num = reader.ReadInt32(); if (num > 0) { result.payloadField = reader.ReadBytes(num); } else { result.payloadField = null; } } } }