Exemplo n.º 1
0
        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);
     }));
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
            }
Exemplo n.º 9
0
            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);
            }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
            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);
            }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 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");
 }
Exemplo n.º 15
0
 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");
 }
Exemplo n.º 16
0
        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");
        }
Exemplo n.º 17
0
 private void OnSamplePacketReceived(SamplePacket samplePacket, NetPeer peer)
 {
     Console.WriteLine("[Server] ReceivedPacket from {0}:\n{1}", peer.EndPoint, samplePacket);
 }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
 private void OnSamplePacketReceived(SamplePacket samplePacket)
 {
     Console.WriteLine("[Server] ReceivedPacket:\n" + samplePacket);
 }