Example #1
0
 public void Stop()
 {
     if (_server.IsActive)
     {
         _server.Stop();
     }
 }
 /// <summary>
 /// 停止
 /// </summary>
 public void StopReactor()
 {
     try
     {
         if (this.IsReactorOpen)
         {
             connectionAdapter.StopReceive();
             reactor.Stop();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
     }
 }
        public void Helios20_Client_and_Helios14_Server_Should_ReadWrite()
        {
            IReactor server = null;
            IChannel client = null;

            try
            {
                server            = _serverBootstrap.NewReactor(NodeBuilder.BuildNode().Host(IPAddress.Loopback).WithPort(0));
                server.OnReceive += (data, channel) =>
                {
                    // echo the response back
                    channel.Send(data);
                };

                server.OnConnection += (address, channel) => { channel.BeginReceive(); };

                server.Start();
                client = _clientBootstrap.ConnectAsync(server.LocalEndpoint).Result;
                Task.Delay(TimeSpan.FromMilliseconds(500)).Wait(); // because Helios 1.4 is stupid
                var writes =
                    Enumerable.Range(0, ReadCount)
                    .Select(x => ThreadLocalRandom.Current.Next())
                    .OrderBy(y => y)
                    .ToList();
                foreach (var write in writes)
                {
                    client.WriteAndFlushAsync(Unpooled.Buffer(4).WriteInt(write));
                }

                _resetEvent.Wait();
                var decodedReceive = _received.Select(y => y.ReadInt()).OrderBy(x => x).ToList();
                Assert.True(decodedReceive.SequenceEqual(writes));
            }
            finally
            {
                client?.CloseAsync().Wait();
                server?.Stop();
                _clientGroup.ShutdownGracefullyAsync().Wait();
            }
        }
Example #4
0
 public void Dispose()
 {
     _reactor.Stop();
 }