public static void Test() { // create var packet = new GenericPacket("name"); packet.Data = new Dictionary <string, string>() { { "test1", "val1" }, { "test2", "val2" } }; // send var protocol = new G2Protocol(); var encoded = packet.Encode(protocol); // recv var recvPacket = new G2Header(encoded); int start = 0; int size = encoded.Length; var streamStatus = G2Protocol.ReadNextPacket(recvPacket, ref start, ref size); // decode var check = GenericPacket.Decode(recvPacket); Debug.Assert(check.Data["test1"] == "val1"); Debug.Assert(check.Data["test2"] == "val2"); }
internal void IncomingPacket(XConnection connection, G2ReceivedPacket packet) { if (XRay.IsInvokeRequired()) { XRay.RunInCoreAsync(() => IncomingPacket(connection, packet)); return; } switch (packet.Root.Name) { case PacketType.Padding: //Log("Crypt Padding Received"); break; case PacketType.Generic: var generic = GenericPacket.Decode(packet.Root); Log("Generic Packet Received: " + generic.Name); if (RouteGeneric.ContainsKey(generic.Name)) { RouteGeneric[generic.Name](connection, generic); } else { Log("Unknown generic packet: " + generic.Name); } break; case PacketType.Dat: Receive_DatPacket(connection, packet); break; case PacketType.Sync: Receive_Sync(connection, packet); break; case PacketType.Instance: Receive_Instance(connection, packet); break; default: Log("Unknown Packet Type: " + packet.Root.Name.ToString()); break; } }