public void Init() { _samplePacket = new SamplePacket { SomeFloat = 3.42f, SomeIntArray = new[] { 6, 5, 4 }, SomeString = "Test String", SomeVector2 = new SomeVector2(4, 5), SomeVectors = new[] { new SomeVector2(1, 2), new SomeVector2(3, 4) }, SomeEnum = TestEnum.B, SomeByteArray = new byte[] { 255, 1, 0 }, TestObj = new SampleNetSerializable { Value = 5 }, TestArray = new [] { new SampleNetSerializable { Value = 6 }, new SampleNetSerializable { Value = 15 } }, SampleClassArray = new[] { new SampleClass { Value = 6 }, new SampleClass { Value = 15 } } }; _packetProcessor = new NetPacketProcessor(); _packetProcessor.RegisterNestedType <SampleNetSerializable>(); _packetProcessor.RegisterNestedType(() => new SampleClass()); _packetProcessor.RegisterNestedType(SomeVector2.Serialize, SomeVector2.Deserialize); }
public void IngestNewSamples(SamplePacket samplePacket) { Application.Current.Dispatcher.Invoke(new Action(() => { IngestMainThread(samplePacket); })); }
public void CustomPackageTest() { var writer = new NetDataWriter(); _packetProcessor.Write(writer, _samplePacket); var reader = new NetDataReader(writer.CopyData()); SamplePacket readPackage = null; _packetProcessor.SubscribeReusable <SamplePacket>( packet => { readPackage = packet; }); _packetProcessor.ReadAllPackets(reader); Assert.NotNull(readPackage); Assert.IsTrue(AreSame(_samplePacket.EmptyString, readPackage.EmptyString)); Assert.AreEqual(_samplePacket.SomeFloat, readPackage.SomeFloat); Assert.AreEqual(_samplePacket.SomeIntArray, readPackage.SomeIntArray); Assert.IsTrue(AreSame(_samplePacket.SomeString, readPackage.SomeString)); Assert.AreEqual(_samplePacket.SomeVector2, readPackage.SomeVector2); Assert.AreEqual(_samplePacket.SomeVectors, readPackage.SomeVectors); Assert.AreEqual(_samplePacket.SomeEnum, readPackage.SomeEnum); Assert.AreEqual(_samplePacket.TestObj.Value, readPackage.TestObj.Value); Assert.AreEqual(_samplePacket.TestArray, readPackage.TestArray); Assert.AreEqual(_samplePacket.SomeByteArray, readPackage.SomeByteArray); Assert.AreEqual(_samplePacket.SampleClassArray, readPackage.SampleClassArray); }
static void Main(string[] args) { NetPacketProcessor _netPacketProcessor = new NetPacketProcessor(); LCRClient listener = new LCRClient(); NetManager client = new NetManager(listener); listener.client = client; client.Start(); var server = client.Connect("localhost" /* host ip or name */, 9050 /* port */, "SomeConnectionKey" /* text key or NetDataWriter */); client.DisconnectTimeout = 6000; pl mpl = new pl { Name = "Bob", Tickets = 3 }; NetDataWriter dw = new NetDataWriter(); listener.tpl = mpl; SamplePacket samPack = new SamplePacket { }; Thread.Sleep(500); while (server.ConnectionState != ConnectionState.Connected) { int cd = 1000; Console.WriteLine($"[Client {DateTime.Now}] connection to localhost port 9050 failed. Trying again in {cd} ms."); Thread.Sleep(cd); server = client.Connect("localhost" /* host ip or name */, 9050 /* port */, "SomeConnectionKey" /* text key or NetDataWriter */); } listener.AttachServer(server); while (server.ConnectionState == ConnectionState.Connected) { client.PollEvents(); Thread.Sleep(15); if (Console.KeyAvailable) { var key = Console.ReadKey(false); if (key.KeyChar == 'r') { listener.SendPacket(listener.tpl); } else if (key.KeyChar == 'c') { CreateGamePacket cgp = new CreateGamePacket(); listener.SendCreateGameRequest(cgp); } } if (server.ConnectionState != ConnectionState.Connected) { break; } } client.Stop(); }
public void Run() { Console.WriteLine("=== Serializer benchmark ==="); //Test serializer performance Stopwatch stopwatch = new Stopwatch(); BinaryFormatter binaryFormatter = new BinaryFormatter(); MemoryStream memoryStream = new MemoryStream(); NetDataWriter netDataWriter = new NetDataWriter(); SamplePacket samplePacket = new SamplePacket { SomeFloat = 0.3f, SomeString = "TEST", SomeIntArray = new [] { 1, 2, 3 }, SomeVector2 = new SomeVector2(1, 2), SomeVectors = new SomeVector2[20] }; for (int i = 0; i < samplePacket.SomeVectors.Length; i++) { samplePacket.SomeVectors[i] = new SomeVector2(i, i); } var netSerializer = new NetSerializer(); netSerializer.RegisterNestedType <SampleNetSerializable>(); netSerializer.RegisterNestedType(SomeVector2.Serialize, SomeVector2.Deserialize); //Prewarm cpu for (int i = 0; i < 10000000; i++) { double c = Math.Sin(i); } //Test binary formatter stopwatch.Start(); for (int i = 0; i < LoopLength; i++) { binaryFormatter.Serialize(memoryStream, samplePacket); } stopwatch.Stop(); Console.WriteLine("BinaryFormatter time: " + stopwatch.ElapsedMilliseconds + " ms"); Console.WriteLine("BinaryFormatter size: " + memoryStream.Position / LoopLength); DataWriterTest(netDataWriter, stopwatch, samplePacket); NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket); DataWriterTest(netDataWriter, stopwatch, samplePacket); NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket); DataWriterTest(netDataWriter, stopwatch, samplePacket); NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket); Console.ReadKey(); }
public void EncodeSampleDiscoveryPacket() { var dp = new SamplePacket(); dp.Version = "1.0"; dp.Properties["Name"] = "Dummy"; var packet = DiscoveryMetadataHelper.Encode(dp); Assert.IsNotNull(packet); Assert.IsTrue(packet.Length == 110); }
public void EncodeSampleDiscoveryPacket() { var dp = new SamplePacket(); dp.Version = "1.0"; dp.Properties["Name"] = "Dummy"; var packet = DiscoveryMetadataHelper.Encode(dp); Assert.IsNotNull(packet); Assert.IsTrue(packet.Length == 110); }
private void IngestMainThread(SamplePacket packet) { var plt = _window.TheGraph.plt; if (_last != null) { plt.Remove(_last); } _last = plt.PlotSignal(ToDouble(packet.Samples)); plt.Resize(); _window.TheGraph.Render(); }
public void OnPeerConnected(NetPeer peer) { Console.WriteLine("[Client] connected to: {0}:{1}", peer.EndPoint.Host, peer.EndPoint.Port); SamplePacket sp = new SamplePacket { SomeFloat = 3.42f, SomeIntArray = new[] { 6, 5, 4 }, SomeString = "Test String", SomeVector2 = new SomeVector2(4, 5), SomeVectors = new[] { new SomeVector2(1, 2), new SomeVector2(3, 4) } }; Console.WriteLine("Sending to server:\n" + sp); peer.Send(_serializer.Serialize(sp), SendOptions.ReliableOrdered); }
public void DecodeSampleDiscoveryPacket() { var dp = new SamplePacket(); dp.Version = "EDC35F23-60AD-4730-A9AC-23D57B666DC1"; dp.ServiceUri = @"tcp://msdn.microsoft.com/en-us/library/tst0kwb1(v=vs.110).aspx|Something=Else|#5235@#$%\a\p\|@@"; dp.Properties["ExtraProperty"] = @"#%@$%45654!@#$\4214\|Shame=Value"; DiscoveryMetadataHelper.RegisterDiscoveryMetadataFactory(dp.Signature, () => new SamplePacket()); var packet = DiscoveryMetadataHelper.Encode(dp); var decoded = DiscoveryMetadataHelper.Decode(packet); Assert.IsNotNull(decoded); Assert.AreEqual(decoded.GetType(), typeof(SamplePacket)); Assert.AreEqual(dp, decoded); }
public void DecodeSampleDiscoveryPacket() { var dp = new SamplePacket(); dp.Version = "EDC35F23-60AD-4730-A9AC-23D57B666DC1"; dp.ServiceUri = @"tcp://msdn.microsoft.com/en-us/library/tst0kwb1(v=vs.110).aspx|Something=Else|#5235@#$%\a\p\|@@"; dp.Properties["ExtraProperty"] = @"#%@$%45654!@#$\4214\|Shame=Value"; DiscoveryMetadataHelper.RegisterDiscoveryMetadataFactory(dp.Signature, () => new SamplePacket()); var packet = DiscoveryMetadataHelper.Encode(dp); var decoded = DiscoveryMetadataHelper.Decode(packet); Assert.IsNotNull(decoded); Assert.AreEqual(decoded.GetType(), typeof(SamplePacket)); Assert.AreEqual(dp, decoded); }
public void OnPeerConnected(NetPeer peer) { Console.WriteLine("[Client] connected to: {0}:{1}", peer.EndPoint.Host, peer.EndPoint.Port); SamplePacket sp = new SamplePacket { SomeFloat = 3.42f, SomeIntArray = new[] { 6, 5, 4 }, SomeString = "Test String", SomeVector2 = new SomeVector2(4, 5), SomeVectors = new[] { new SomeVector2(1, 2), new SomeVector2(3, 4) }, TestObj = new SampleNetSerializable { Value = 5 } }; byte[] data = _serializer.Serialize(sp); Console.WriteLine("Sending to server (length {0}):\n{1}", data.Length, sp); peer.Send(data, SendOptions.ReliableOrdered); }
public void Init() { _samplePacket = new SamplePacket { SomeFloat = 3.42f, SomeIntArray = new[] { 6, 5, 4 }, SomeString = "Test String", SomeVector2 = new SomeVector2(4, 5), SomeVectors = new[] { new SomeVector2(1, 2), new SomeVector2(3, 4) }, SomeEnum = TestEnum.B, TestObj = new SampleNetSerializable { Value = 5 } }; _serializer = new NetSerializer(); _serializer.RegisterCustomType <SampleNetSerializable>(); _serializer.RegisterCustomType(SomeVector2.Serialize, SomeVector2.Deserialize); }
private void DataWriterTest(NetDataWriter netDataWriter, Stopwatch stopwatch, SamplePacket samplePacket) { netDataWriter.Reset(); stopwatch.Restart(); for (int i = 0; i < LoopLength; i++) { netDataWriter.Put(samplePacket.SomeString); netDataWriter.Put(samplePacket.SomeFloat); netDataWriter.PutArray(samplePacket.SomeIntArray); SomeVector2.Serialize(netDataWriter, samplePacket.SomeVector2); netDataWriter.Put((ushort)samplePacket.SomeVectors.Length); for (int j = 0; j < samplePacket.SomeVectors.Length; j++) { SomeVector2.Serialize(netDataWriter, samplePacket.SomeVectors[j]); } netDataWriter.Put(samplePacket.EmptyString); netDataWriter.Put(samplePacket.TestObj); } stopwatch.Stop(); Console.WriteLine($"Raw time: {stopwatch.ElapsedMilliseconds} ms, size: { netDataWriter.Length / LoopLength} bytes"); }
private void NetSerializerTest(NetSerializer serializer, NetDataWriter netDataWriter, Stopwatch stopwatch, SamplePacket samplePacket) { netDataWriter.Reset(); stopwatch.Restart(); for (int i = 0; i < LoopLength; i++) { serializer.Serialize(netDataWriter, samplePacket); } stopwatch.Stop(); Console.WriteLine($"NetSerializer time: {stopwatch.ElapsedMilliseconds} ms, size: { netDataWriter.Length / LoopLength} bytes"); }
private void TestPerformance() { const int LoopLength = 100000; //Test serializer performance Stopwatch stopwatch = new Stopwatch(); BinaryFormatter binaryFormatter = new BinaryFormatter(); MemoryStream memoryStream = new MemoryStream(); NetDataWriter netDataWriter = new NetDataWriter(); SamplePacket samplePacket = new SamplePacket { SomeFloat = 0.3f, SomeString = "TEST", SomeIntArray = new [] { 1, 2, 3 }, SomeVector2 = new SomeVector2(1, 2), SomeVectors = new [] { new SomeVector2(3, 4), new SomeVector2(5, 6) } }; NetSerializer netSerializer = new NetSerializer(); netSerializer.RegisterCustomType <SampleNetSerializable>(); netSerializer.RegisterCustomType(SomeVector2.Serialize, SomeVector2.Deserialize); //Prewarm cpu for (int i = 0; i < 10000000; i++) { double c = Math.Sin(i); } //Test binary formatter stopwatch.Start(); for (int i = 0; i < LoopLength; i++) { binaryFormatter.Serialize(memoryStream, samplePacket); } stopwatch.Stop(); Console.WriteLine("BinaryFormatter time: " + stopwatch.ElapsedMilliseconds + " ms"); //Test NetSerializer stopwatch.Restart(); for (int i = 0; i < LoopLength; i++) { netSerializer.Serialize(netDataWriter, samplePacket); } stopwatch.Stop(); Console.WriteLine("NetSerializer first run time: " + stopwatch.ElapsedMilliseconds + " ms"); //Test NetSerializer netDataWriter.Reset(); stopwatch.Restart(); for (int i = 0; i < LoopLength; i++) { netSerializer.Serialize(netDataWriter, samplePacket); } stopwatch.Stop(); Console.WriteLine("NetSerializer second run time: " + stopwatch.ElapsedMilliseconds + " ms"); //Test RAW netDataWriter.Reset(); stopwatch.Restart(); for (int i = 0; i < LoopLength; i++) { netDataWriter.Put(samplePacket.SomeFloat); netDataWriter.Put(samplePacket.SomeString); netDataWriter.PutArray(samplePacket.SomeIntArray); netDataWriter.Put(samplePacket.SomeVector2.X); netDataWriter.Put(samplePacket.SomeVector2.Y); netDataWriter.Put(samplePacket.SomeVectors.Length); for (int j = 0; j < samplePacket.SomeVectors.Length; j++) { netDataWriter.Put(samplePacket.SomeVectors[j].X); netDataWriter.Put(samplePacket.SomeVectors[j].Y); } netDataWriter.Put(samplePacket.EmptyString); netDataWriter.Put(samplePacket.TestObj.Value); } stopwatch.Stop(); Console.WriteLine("DataWriter (raw put method calls) time: " + stopwatch.ElapsedMilliseconds + " ms"); }
private void OnSamplePacketReceived(SamplePacket samplePacket, NetPeer peer) { Console.WriteLine("[Server] ReceivedPacket from {0}:\n{1}", peer.EndPoint, samplePacket); }
public void CustomPackageTest() { var writer = new NetDataWriter(); _packetProcessor.Write(writer, _samplePacket); var reader = new NetDataReader(writer); SamplePacket readPackage = null; _packetProcessor.SubscribeReusable <SamplePacket>( packet => { readPackage = packet; }); _packetProcessor.ReadAllPackets(reader); Assert.NotNull(readPackage); Assert.IsTrue(AreSame(_samplePacket.EmptyString, readPackage.EmptyString)); Assert.AreEqual(_samplePacket.SomeFloat, readPackage.SomeFloat); Assert.AreEqual(_samplePacket.SomeIntArray, readPackage.SomeIntArray); Assert.IsTrue(AreSame(_samplePacket.SomeString, readPackage.SomeString)); Assert.AreEqual(_samplePacket.SomeVector2, readPackage.SomeVector2); Assert.AreEqual(_samplePacket.SomeVectors, readPackage.SomeVectors); Assert.AreEqual(_samplePacket.SomeEnum, readPackage.SomeEnum); Assert.AreEqual(_samplePacket.TestObj.Value, readPackage.TestObj.Value); Assert.AreEqual(_samplePacket.TestArray, readPackage.TestArray); Assert.AreEqual(_samplePacket.SomeByteArray, readPackage.SomeByteArray); Assert.AreEqual(_samplePacket.SampleClassArray, readPackage.SampleClassArray); CollectionAssert.AreEqual(_samplePacket.SampleClassList, readPackage.SampleClassList); CollectionAssert.AreEqual(_samplePacket.VectorList, readPackage.VectorList); //remove test _samplePacket.SampleClassList.RemoveAt(0); _samplePacket.SampleClassArray = new [] { new SampleClass { Value = 1 } }; _samplePacket.VectorList.RemoveAt(0); writer.Reset(); _packetProcessor.Write(writer, _samplePacket); reader.SetSource(writer); _packetProcessor.ReadAllPackets(reader); Assert.AreEqual(_samplePacket.SampleClassArray, readPackage.SampleClassArray); CollectionAssert.AreEqual(_samplePacket.SampleClassList, readPackage.SampleClassList); //add test _samplePacket.SampleClassList.Add(new SampleClass { Value = 152 }); _samplePacket.SampleClassList.Add(new SampleClass { Value = 154 }); _samplePacket.SampleClassArray = new[] { new SampleClass { Value = 1 }, new SampleClass { Value = 2 }, new SampleClass { Value = 3 } }; _samplePacket.VectorList.Add(new SomeVector2(500, 600)); writer.Reset(); _packetProcessor.Write(writer, _samplePacket); reader.SetSource(writer); _packetProcessor.ReadAllPackets(reader); Assert.AreEqual(_samplePacket.SampleClassArray, readPackage.SampleClassArray); CollectionAssert.AreEqual(_samplePacket.SampleClassList, readPackage.SampleClassList); }
private void OnSamplePacketReceived(SamplePacket samplePacket) { Console.WriteLine("[Server] ReceivedPacket:\n" + samplePacket); }