Exemple #1
0
        public override void Parse(PacketParser parser, ParsedSegment parent)
        {
            var list = new List <ParsedSegment>();

            while (parser.Packet.Position < parser.Packet.Length)
            {
                var element = new ParsedSegment(this, null);
                list.Add(element);

                foreach (var segment in Segments)
                {
                    segment.Parse(parser, element);
                }
            }

            var parsedSegment = new ParsedSegment(this, list.Count);

            parsedSegment.List.AddRange(list);
            parent.AddChild(parser, parsedSegment);
        }
Exemple #2
0
        public virtual void Parse(PacketParser parser, ParsedSegment parent)
        {
            var reader = SimpleTypes.GetReader(Type);
            var value  = reader(this, parser);

            if (SegmentType != null)
            {
                try
                {
                    value = Utility.ChangeType(value, SegmentType, true);
                }
                catch (OverflowException e)
                {
                    throw new Exception(string.Format("Wrong underlying type {0} for Enum {1} in PacketDefinition {2} in Segment {3}",
                                                      Type, m_segmentType, parser.Packet, Name), e);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Could not parse value " + value + " in Segment \"" + this + "\": " + e);
                }
            }

            parent.AddChild(parser, new ParsedSegment(this, value));
        }