diff options
| author | Vasily <JustAMan@users.noreply.github.com> | 2019-02-20 15:03:42 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-20 15:03:42 +0300 |
| commit | 8ef41020d94832fbce4a3ef8aba598d30b7adaa5 (patch) | |
| tree | dca4bf1b09c31b8f5bfd4e2b5815d5ede859179e /SocketHttpListener/Net/HttpListenerPrefixCollection.cs | |
| parent | 60df855b263e691f946973a192621e7998db9cbb (diff) | |
| parent | fca226bdfde49f30e6347593a9d8870eec55269f (diff) | |
Merge pull request #847 from Bond-009/async
Make websockets code async
Diffstat (limited to 'SocketHttpListener/Net/HttpListenerPrefixCollection.cs')
| -rw-r--r-- | SocketHttpListener/Net/HttpListenerPrefixCollection.cs | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/SocketHttpListener/Net/HttpListenerPrefixCollection.cs b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs index 97dc6797c..400a1adb6 100644 --- a/SocketHttpListener/Net/HttpListenerPrefixCollection.cs +++ b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs @@ -7,18 +7,18 @@ namespace SocketHttpListener.Net { public class HttpListenerPrefixCollection : ICollection<string>, IEnumerable<string>, IEnumerable { - List<string> prefixes = new List<string>(); - HttpListener listener; + private List<string> _prefixes = new List<string>(); + private HttpListener _listener; private ILogger _logger; internal HttpListenerPrefixCollection(ILogger logger, HttpListener listener) { _logger = logger; - this.listener = listener; + _listener = listener; } - public int Count => prefixes.Count; + public int Count => _prefixes.Count; public bool IsReadOnly => false; @@ -26,61 +26,90 @@ namespace SocketHttpListener.Net public void Add(string uriPrefix) { - listener.CheckDisposed(); + _listener.CheckDisposed(); //ListenerPrefix.CheckUri(uriPrefix); - if (prefixes.Contains(uriPrefix)) + if (_prefixes.Contains(uriPrefix)) + { return; + } - prefixes.Add(uriPrefix); - if (listener.IsListening) - HttpEndPointManager.AddPrefix(_logger, uriPrefix, listener); + _prefixes.Add(uriPrefix); + if (_listener.IsListening) + { + HttpEndPointManager.AddPrefix(_logger, uriPrefix, _listener); + } + } + + public void AddRange(IEnumerable<string> uriPrefixes) + { + _listener.CheckDisposed(); + + foreach (var uriPrefix in uriPrefixes) + { + if (_prefixes.Contains(uriPrefix)) + { + continue; + } + + _prefixes.Add(uriPrefix); + if (_listener.IsListening) + { + HttpEndPointManager.AddPrefix(_logger, uriPrefix, _listener); + } + } } public void Clear() { - listener.CheckDisposed(); - prefixes.Clear(); - if (listener.IsListening) - HttpEndPointManager.RemoveListener(_logger, listener); + _listener.CheckDisposed(); + _prefixes.Clear(); + if (_listener.IsListening) + { + HttpEndPointManager.RemoveListener(_logger, _listener); + } } public bool Contains(string uriPrefix) { - listener.CheckDisposed(); - return prefixes.Contains(uriPrefix); + _listener.CheckDisposed(); + return _prefixes.Contains(uriPrefix); } public void CopyTo(string[] array, int offset) { - listener.CheckDisposed(); - prefixes.CopyTo(array, offset); + _listener.CheckDisposed(); + _prefixes.CopyTo(array, offset); } public void CopyTo(Array array, int offset) { - listener.CheckDisposed(); - ((ICollection)prefixes).CopyTo(array, offset); + _listener.CheckDisposed(); + ((ICollection)_prefixes).CopyTo(array, offset); } public IEnumerator<string> GetEnumerator() { - return prefixes.GetEnumerator(); + return _prefixes.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { - return prefixes.GetEnumerator(); + return _prefixes.GetEnumerator(); } public bool Remove(string uriPrefix) { - listener.CheckDisposed(); + _listener.CheckDisposed(); if (uriPrefix == null) + { throw new ArgumentNullException(nameof(uriPrefix)); + } - bool result = prefixes.Remove(uriPrefix); - if (result && listener.IsListening) - HttpEndPointManager.RemovePrefix(_logger, uriPrefix, listener); + bool result = _prefixes.Remove(uriPrefix); + if (result && _listener.IsListening) + { + HttpEndPointManager.RemovePrefix(_logger, uriPrefix, _listener); + } return result; } |
