예제 #1
0
        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;
        }
예제 #2
0
        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);
        }