Mercurial > hg > ucis.core
diff Net/TCPServer.cs @ 108:819fb56a56ea
Removed rate limiting code from TCPServer
author | Ivo Smits <Ivo@UCIS.nl> |
---|---|
date | Mon, 27 Oct 2014 23:24:32 +0100 |
parents | 4ba4fd48e1da |
children |
line wrap: on
line diff
--- a/Net/TCPServer.cs Sat Oct 11 14:08:10 2014 +0200 +++ b/Net/TCPServer.cs Mon Oct 27 23:24:32 2014 +0100 @@ -30,10 +30,6 @@ private NetworkConnectionList _Clients = new NetworkConnectionList(); private ModuleCollection _Modules = new ModuleCollection(); private IModule _CatchAllModule = null; - private Int32 _ThrottleCounter; - private Int32 _ThrottleBurst = 10; - private Int32 _ThrottleRate = 0; - private Timer _ThrottleTimer = null; public TCPServer() { _ThreadPool = UCIS.ThreadPool.DefaultPool; @@ -56,28 +52,6 @@ } } - public Int32 ThrottleRate { - get { return _ThrottleRate; } - set { - if (value < 0) throw new ArgumentOutOfRangeException("value"); - _ThrottleRate = value; - if (_Listener == null) return; - if (value == 0 && _ThrottleTimer != null) { - _ThrottleTimer.Dispose(); - _ThrottleTimer = null; - } else if (value > 0 && _ThrottleTimer == null) { - _ThrottleTimer = new Timer(ThrottleCallback, null, 1000, 1000); - } - } - } - public Int32 ThrottleBurst { - get { return _ThrottleBurst; } - set { - if (value < 1) throw new ArgumentOutOfRangeException("value"); - _ThrottleBurst = value; - } - } - public EndPoint LocalEndPoint { get { return _Listener.LocalEndPoint; } } public void Listen(int Port) { @@ -85,21 +59,13 @@ } public void Listen(AddressFamily af, int Port) { Stop(); - _Listener = new Socket(af, SocketType.Stream, ProtocolType.Tcp); - _Listener.Bind(new IPEndPoint(af == AddressFamily.InterNetworkV6 ? IPAddress.IPv6Any : IPAddress.Any, Port)); _Listener.Listen(25); - _ThrottleCounter = _ThrottleBurst; _Listener.BeginAccept(AcceptCallback, null); - - if (_ThrottleRate > 0) { - _ThrottleTimer = new Timer(ThrottleCallback, null, 1000, 1000); - } } public void Stop() { - if (_ThrottleTimer != null) _ThrottleTimer.Dispose(); if (_Listener != null && _Listener.IsBound) _Listener.Close(); _Listener = null; } @@ -117,10 +83,9 @@ } } - private void AcceptCallback(System.IAsyncResult ar) { - Client Client = null; + private void AcceptCallback(IAsyncResult ar) { + if (_Listener == null) return; Socket Socket = null; - if (_Listener == null) return; try { Socket = _Listener.EndAccept(ar); } catch (ObjectDisposedException) { @@ -132,7 +97,7 @@ } if (Socket != null) { try { - Client = new Client(Socket, this); + Client Client = new Client(Socket, this); _Clients.Add(Client); if (ClientAccepted != null) ClientAccepted(this, new ClientAcceptedEventArgs(Client)); Client.Start(_ThreadPool); @@ -140,20 +105,7 @@ Console.WriteLine(ex.ToString()); } } - if (_ThrottleCounter > 0 || _ThrottleRate == 0) { - _ThrottleCounter--; - _Listener.BeginAccept(AcceptCallback, null); - } - } - - private void ThrottleCallback(Object state) { - if (_Listener == null) return; - if (_ThrottleRate == 0) return; - if (_ThrottleCounter >= _ThrottleBurst) return; - if (_ThrottleCounter <= 0) { - _Listener.BeginAccept(AcceptCallback, null); - } - _ThrottleRate += _ThrottleRate; + _Listener.BeginAccept(AcceptCallback, null); } public interface IModule { @@ -163,7 +115,6 @@ private class Client : TCPStream { private TCPServer _Server; - private UCIS.ThreadPool.WorkItem _WorkItem; private IModule _Module; private byte _MagicNumber; @@ -175,7 +126,6 @@ } private void _Stream_Closed(object sender, EventArgs e) { - _WorkItem = null; _Module = null; _Server = null; base.Closed -= _Stream_Closed; @@ -188,7 +138,7 @@ } internal void Start(UCIS.ThreadPool Pool) { - _WorkItem = Pool.QueueWorkItem(WorkerProc, null); + Pool.QueueWorkItem(WorkerProc, null); } private void WorkerProc(object state) {