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()); }
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(); }