示例#1
0
        public void Start()
        {
            _layerFactory                 = new OwinHandlerFactory(_parameters.OwinApp, _parameters.OwinCapabilities);
            _ipIsLocalChecker             = new IpIsLocalChecker();
            _connectionAllocationStrategy = _parameters.ConnectionAllocationStrategy;
            var isSsl = _parameters.Certificate != null;

            _layerFactory = new Transport2HttpFactory(_parameters.BufferSize, isSsl, _parameters.ServerHeader, _ipIsLocalChecker, _layerFactory);
            if (isSsl)
            {
                _layerFactory = new SslTransportFactory(_parameters, _layerFactory);
            }
            ListenSocket = new Socket(_parameters.EndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            var start = DateTime.UtcNow;

            while (true)
            {
                try
                {
                    ListenSocket.Bind(_parameters.EndPoint);
                    break;
                }
                catch when(start + _parameters.RetrySocketBindingTime > DateTime.UtcNow)
                {
                }
                Thread.Sleep(50);
            }
            ListenSocket.Listen(100);
            var initialConnectionCount = _connectionAllocationStrategy.CalculateNewConnectionCount(0, 0);

            AllocatedConnections = initialConnectionCount;
            _blocks.Add(new ConnectionBlock(this, _layerFactory, initialConnectionCount));
        }
示例#2
0
 public void Start()
 {
     _layerFactory = new OwinHandlerFactory(_parameters.OwinApp, _parameters.OwinCapabilities);
     _ipIsLocalChecker = new IpIsLocalChecker();
     _connectionAllocationStrategy = _parameters.ConnectionAllocationStrategy;
     var isSsl = _parameters.Certificate != null;
     _layerFactory = new Transport2HttpFactory(_parameters.BufferSize, isSsl, _parameters.ServerHeader, _ipIsLocalChecker, _layerFactory);
     if (isSsl)
     {
         _layerFactory = new SslTransportFactory(_parameters, _layerFactory);
     }
     ListenSocket = new Socket(_parameters.EndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
     var start = DateTime.UtcNow;
     while (true)
     {
         try
         {
             ListenSocket.Bind(_parameters.EndPoint);
             break;
         }
         catch when(start + _parameters.RetrySocketBindingTime > DateTime.UtcNow)
         {
         }
         Thread.Sleep(50);
     }
     ListenSocket.Listen(100);
     var initialConnectionCount = _connectionAllocationStrategy.CalculateNewConnectionCount(0, 0);
     AllocatedConnections = initialConnectionCount;
     _blocks.Add(new ConnectionBlock(this, _layerFactory, initialConnectionCount));
 }
示例#3
0
 public void Dispose()
 {
     lock (_newConnectionLock)
     {
         _connectionAllocationStrategy = new FinishingAllocationStrategy();
     }
     ListenSocket.Close();
     foreach (var block in _blocks)
     {
         block.Stop();
     }
 }
示例#4
0
文件: Server.cs 项目: tonyozr/Nowin
 public void Dispose()
 {
     lock (_newConnectionLock)
     {
         _connectionAllocationStrategy = new FinishingAllocationStrategy();
     }
     ListenSocket.Close();
     foreach (var block in _blocks)
     {
         block.Stop();
     }
 }
示例#5
0
文件: Server.cs 项目: Bobris/Nowin
        public void Dispose()
        {
            lock (_newConnectionLock)
            {
                _connectionAllocationStrategy = new FinishingAllocationStrategy();
            }

            ListenSocket?.Dispose();

            ConnectionBlock block;
            while (_blocks.TryTake(out block))
            {
                block.Stop();
            }
        }
示例#6
0
文件: Server.cs 项目: lwliang/doc
        public void Dispose()
        {
            lock (_newConnectionLock)
            {
                _connectionAllocationStrategy = new FinishingAllocationStrategy();
            }

            ListenSocket?.Dispose();

            ConnectionBlock block;

            while (_blocks.TryTake(out block))
            {
                block.Stop();
            }
        }
示例#7
0
 public void Start()
 {
     _layerFactory = new OwinHandlerFactory(_parameters.OwinApp, _parameters.OwinCapabilities);
     _ipIsLocalChecker = new IpIsLocalChecker();
     _connectionAllocationStrategy = _parameters.ConnectionAllocationStrategy;
     var isSsl = _parameters.Certificate != null;
     _layerFactory = new Transport2HttpFactory(_parameters.BufferSize, isSsl, _ipIsLocalChecker, _layerFactory);
     if (isSsl)
     {
         _layerFactory = new SslTransportFactory(_parameters.Certificate, _layerFactory);
     }
     ListenSocket = new Socket(_parameters.EndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
     ListenSocket.Bind(_parameters.EndPoint);
     ListenSocket.Listen(100);
     var initialConnectionCount = _connectionAllocationStrategy.CalculateNewConnectionCount(0, 0);
     AllocatedConnections = initialConnectionCount;
     _blocks.Add(new ConnectionBlock(this, _layerFactory, initialConnectionCount));
 }
示例#8
0
 public ServerBuilder SetConnectionAllocationStrategy(IConnectionAllocationStrategy strategy)
 {
     _connectionAllocationStrategy = strategy;
     return this;
 }
示例#9
0
 public ServerBuilder SetConnectionAllocationStrategy(IConnectionAllocationStrategy strategy)
 {
     _connectionAllocationStrategy = strategy;
     return(this);
 }