public static InstancePacket Decode(G2Header root) { var instance = new InstancePacket(); instance.Fields = new List<IFieldModel>(); // needs to be initd foreach (var child in G2Protocol.EnumerateChildren(root)) switch (child.Name) { case Packet_Type: instance.Type = (InstancePacketType) BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_ThreadID: instance.ThreadID = BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_FieldID: instance.FieldID = BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_Details: instance.Details = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Column: if (instance.Columns == null) instance.Columns = new List<string>(); instance.Columns.Add(UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize)); break; case Packet_Field: if(instance.Fields == null) instance.Fields = new List<IFieldModel>(); var field = new RemoteFieldModel(); foreach (var sub in G2Protocol.EnumerateChildren(child)) switch (sub.Name) { case Packet_SubNodesFlag: field.PossibleSubNodes = BitConverter.ToBoolean(sub.Data, sub.PayloadPos); break; case Packet_FieldID: field.ID = BitConverter.ToInt32(sub.Data, sub.PayloadPos); break; case Packet_Cell: if(field.Cells == null) field.Cells = new List<string>(); field.Cells.Add(UTF8Encoding.UTF8.GetString(sub.Data, sub.PayloadPos, sub.PayloadSize)); break; } instance.Fields.Add(field); break; } return instance; }
public static InstancePacket Decode(G2Header root) { var instance = new InstancePacket(); instance.Fields = new List <IFieldModel>(); // needs to be initd foreach (var child in G2Protocol.EnumerateChildren(root)) { switch (child.Name) { case Packet_Type: instance.Type = (InstancePacketType)BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_ThreadID: instance.ThreadID = BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_FieldID: instance.FieldID = BitConverter.ToInt32(child.Data, child.PayloadPos); break; case Packet_Details: instance.Details = UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize); break; case Packet_Column: if (instance.Columns == null) { instance.Columns = new List <string>(); } instance.Columns.Add(UTF8Encoding.UTF8.GetString(child.Data, child.PayloadPos, child.PayloadSize)); break; case Packet_Field: if (instance.Fields == null) { instance.Fields = new List <IFieldModel>(); } var field = new RemoteFieldModel(); foreach (var sub in G2Protocol.EnumerateChildren(child)) { switch (sub.Name) { case Packet_SubNodesFlag: field.PossibleSubNodes = BitConverter.ToBoolean(sub.Data, sub.PayloadPos); break; case Packet_FieldID: field.ID = BitConverter.ToInt32(sub.Data, sub.PayloadPos); break; case Packet_Cell: if (field.Cells == null) { field.Cells = new List <string>(); } field.Cells.Add(UTF8Encoding.UTF8.GetString(sub.Data, sub.PayloadPos, sub.PayloadSize)); break; } } instance.Fields.Add(field); break; } } return(instance); }