예제 #1
0
        private string GenerateDebugCode(int length, byte[] data, int dataSize, byte[] payload, Type targetType)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("var rawPacketSize = " + length + ";");
            sb.AppendLine("var bodySize = " + dataSize + ";");

            sb.Append("var rawData = new byte[] { ");
            foreach (var b in data)
            {
                sb.Append(b.ToString() + ", ");
            }
            sb.AppendLine("};");

            sb.Append("var payload = new byte[] { ");
            foreach (var b in payload)
            {
                sb.Append(b.ToString() + ", ");
            }

            sb.AppendLine("};");
            sb.AppendLine();

            sb.AppendLine("var str = \"" + System.Text.Encoding.UTF8.GetString(payload) + "\"");
            sb.AppendLine("var targetType = typeof(" + targetType.FullName + ");");
            sb.AppendLine("var serializer = new " + binarySerializer.GetType().FullName + "();");
            sb.AppendLine("var data = serializer.Deserialize(payload, targetType);");

            return(sb.ToString());
        }
예제 #2
0
        private static void TestSerializer(IBinarySerializer serializer)
        {
            void Add(ref (int, long) self, (int, long) other)
            {
                self = (self.Item1 + other.Item1, self.Item2 + other.Item2);
            }

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Testing serializer: " + serializer.GetType().FullName);
            Console.ResetColor();

            (int total, long elapsed)total = (0, 0);
            Add(ref total, TestSerializer(serializer, new List <int> {
                12345
            }));
            Add(ref total, TestSerializer(serializer, new Dictionary <string, string> {
                { "hello", "world" }, { "hello1", "world" }, { "hello2", "world" }
            }));
            Add(ref total, TestSerializer(serializer, new List <string> {
                "hello", "world", "world2", "world3"
            }));
            Add(ref total, TestSerializer(serializer, true));
            Add(ref total, TestSerializer(serializer, "Hello, World!"));
            Add(ref total, TestSerializer(serializer, DateTime.UtcNow));
            Add(ref total, TestSerializer(serializer, new TestType
            {
                HelloWorld = null,
                OhNo       = DateTime.UtcNow,
                Id         = Guid.NewGuid(),
                IntArray   = new int[5],
                v32        = new Position()
                {
                    X = 123,
                    Y = 456,
                    Z = 789
                },
                Test2 = new TestType2
                {
                    Test = "test"
                }
            }));

            Add(ref total, TestSerializer(serializer, new Position
            {
                X = 123,
                Y = 456,
                Z = 789
            }));

            Console.Write("------------ TOTAL: ");
            Console.ForegroundColor = ConsoleColor.White;
            Console.Write(total.total + " bytes ");
            Console.ResetColor();

            Console.Write("TIME: ");
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine(total.elapsed + " ticks");
            Console.WriteLine();
        }