public EchoClient(int id, Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.id     = id;
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            deliveryMethod           = LiteNetLibBenchmark.GetDeliveryMethod(config.Transmission);

            listener   = new EventBasedNetListener();
            netManager = new NetManager(listener);
            if (!config.Address.Contains(':'))
            {
                // For LiteNetLib 1.0 and above
                //netManager.IPv6Mode = IPv6Mode.Disabled;

                // LiteNetLib up to 0.9.4
                netManager.IPv6Enabled = IPv6Mode.Disabled;
            }

            netManager.UpdateTime        = Utilities.CalculateTimeout(config.ClientTickRate);
            netManager.UnsyncedEvents    = true;
            netManager.DisconnectTimeout = 10000;

            isConnected = false;
            isDisposed  = false;

            listener.PeerConnectedEvent    += OnPeerConnected;
            listener.PeerDisconnectedEvent += OnPeerDisconnected;
            listener.NetworkReceiveEvent   += OnNetworkReceive;
            listener.NetworkErrorEvent     += OnNetworkError;
        }
        public EchoServer(Configuration config, BenchmarkStatistics benchmarkStatistics) : base(IPAddress.Parse(config.Address), config.Port)
        {
            ManualMode = config.Test == TestType.Manual;
            // Use Pinned Object Heap to reduce GC pressure
            message = GC.AllocateArray <byte>(config.MessageByteSize, true);
            config.Message.CopyTo(message, 0);

            NetCoreServerBenchmark.ProcessTransmissionType(config.Transmission);
            this.benchmarkStatistics = benchmarkStatistics;
        }
예제 #3
0
        public EchoServer(Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            communicationChannel     = Kcp2kBenchmark.GetChannel(config.Transmission);


            var interval = (uint)Utilities.CalculateTimeout(config.ServerTickRate);

            server = new KcpServer(OnConnected, OnReceiveMessage, OnDisconnected, DualMode, NoDelay, interval);

            serverThread          = new Thread(TickLoop);
            serverThread.Name     = "Kcp2k Server";
            serverThread.Priority = ThreadPriority.AboveNormal;
        }
        public EchoServer(Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            timeout     = Utilities.CalculateTimeout(this.config.ServerTickRate);
            packetFlags = ENetBenchmark.GetPacketFlags(config.Transmission);

            host    = new Host();
            address = new Address();

            address.Port = (ushort)config.Port;
            address.SetHost(config.Address);
            serverThread          = new Thread(ListenLoop);
            serverThread.Name     = "Enet Server";
            serverThread.Priority = ThreadPriority.AboveNormal;
        }
예제 #5
0
        public EchoClient(int id, Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.id     = id;
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            timeout     = Utilities.CalculateTimeout(this.config.ClientTickRate);
            packetFlags = ENetBenchmark.GetPacketFlags(config.Transmission);

            host    = new Host();
            address = new Address();
            address.SetHost(config.Address);
            address.Port = (ushort)config.Port;
            isDisposed   = false;

            listenThread              = new Thread(ListenLoop);
            listenThread.Name         = $"ENet Client {id}";
            listenThread.IsBackground = true;
        }
예제 #6
0
        public EchoClient(int id, Configuration config, BenchmarkStatistics benchmarkStatistics) : base(config)
        {
            this.id     = id;
            this.config = config;
            this.benchmarkStatistics = benchmarkStatistics;
            noDelay = true;
            communicationChannel = Kcp2kBenchmark.GetChannel(config.Transmission);

            client = new KcpClientConnection();

            client.OnAuthenticated = OnPeerConnected;
            client.OnData          = OnNetworkReceive;
            client.OnDisconnected  = OnPeerDisconnected;

            tickThread              = new Thread(TickLoop);
            tickThread.Name         = $"Kcp2k Client {id}";
            tickThread.IsBackground = true;

            isConnected = false;
            isDisposed  = false;
        }
 protected override IClient CreateNewClient(int id, Configuration config, BenchmarkStatistics statistics)
 {
     return(new EchoClient(id, config, statistics));
 }
 protected override IServer CreateNewServer(Configuration config, BenchmarkStatistics statistics)
 {
     return(new EchoServer(config, statistics));
 }
 public override void Initialize(Configuration config, BenchmarkStatistics benchmarkStatistics)
 {
     ENet.Library.Initialize();
     base.Initialize(config, benchmarkStatistics);
 }