示例#1
0
        private void AddEntry(List <Tuple <string, Color> > entries)
        {
            DataInterceptedEventArgs args = _intercepted.Dequeue();

            if (!IsLoggingAuthorized(args))
            {
                return;
            }

            if (args.IsBlocked)
            {
                entries.Add(Tuple.Create("[Blocked]\r\n", FilterHighlight));
            }
            if (!args.IsOriginal)
            {
                entries.Add(Tuple.Create("[Replaced]\r\n", FilterHighlight));
            }
            if (IsDisplayingTimestamp)
            {
                entries.Add(Tuple.Create($"[{args.Timestamp:M/d H:mm:ss}]\r\n", DetailHighlight));
            }

            MessageItem message = GetMessage(args);

            if (IsDisplayingHash && message != null && !string.IsNullOrWhiteSpace(message.Hash))
            {
                entries.Add(Tuple.Create($"[{message.Hash}]\r\n", DetailHighlight));
            }

            if (IsDisplayingHexadecimal)
            {
                string hex = BitConverter.ToString(args.Packet.ToBytes());
                entries.Add(Tuple.Create($"[{hex.Replace("-", string.Empty)}]\r\n", DetailHighlight));
            }

            string arrow          = "->";
            string title          = "Outgoing";
            Color  entryHighlight = OutgoingHighlight;

            if (!args.IsOutgoing)
            {
                arrow          = "<-";
                title          = "Incoming";
                entryHighlight = IncomingHighlight;
            }

            entries.Add(Tuple.Create(title + "[", entryHighlight));
            entries.Add(Tuple.Create(args.Packet.Id.ToString(), DetailHighlight));

            if (message != null)
            {
                if (IsDisplayingMessageName)
                {
                    entries.Add(Tuple.Create(", ", entryHighlight));
                    entries.Add(Tuple.Create(message.Class.QName.Name, DetailHighlight));
                }
                if (IsDisplayingParserName && message.Parser != null)
                {
                    entries.Add(Tuple.Create(", ", entryHighlight));
                    entries.Add(Tuple.Create(message.Parser.QName.Name, DetailHighlight));
                }
            }
            entries.Add(Tuple.Create("]", entryHighlight));
            entries.Add(Tuple.Create($" {arrow} ", DetailHighlight));
            entries.Add(Tuple.Create($"{args.Packet}\r\n", entryHighlight));

            if (IsDisplayingStructure && message?.Structure?.Length >= 0)
            {
                int     position  = 0;
                HPacket packet    = args.Packet;
                string  structure = ("{id:" + packet.Id + "}");
                foreach (string valueType in message.Structure)
                {
                    switch (valueType.ToLower())
                    {
                    case "int":
                        structure += ("{i:" + packet.ReadInt32(ref position) + "}");
                        break;

                    case "string":
                        structure += ("{s:" + packet.ReadUTF8(ref position) + "}");
                        break;

                    case "double":
                        structure += ("{d:" + packet.ReadDouble(ref position) + "}");
                        break;

                    case "byte":
                        structure += ("{b:" + packet.ReadByte(ref position) + "}");
                        break;

                    case "boolean":
                        structure += ("{b:" + packet.ReadBoolean(ref position) + "}");
                        break;
                    }
                }
                if (packet.GetReadableBytes(position) == 0)
                {
                    entries.Add(Tuple.Create(structure + "\r\n", StructureHighlight));
                }
            }
            entries.Add(Tuple.Create("--------------------\r\n", DetailHighlight));
        }