12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Microsoft.Extensions.Logging;
- namespace SocketHttpListener.Net
- {
- public class HttpListenerPrefixCollection : ICollection<string>, IEnumerable<string>, IEnumerable
- {
- List<string> prefixes = new List<string>();
- HttpListener listener;
- private ILogger _logger;
- internal HttpListenerPrefixCollection(ILogger logger, HttpListener listener)
- {
- _logger = logger;
- this.listener = listener;
- }
- public int Count => prefixes.Count;
- public bool IsReadOnly => false;
- public bool IsSynchronized => false;
- public void Add(string uriPrefix)
- {
- listener.CheckDisposed();
- //ListenerPrefix.CheckUri(uriPrefix);
- if (prefixes.Contains(uriPrefix))
- return;
- 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);
- }
- public bool Contains(string uriPrefix)
- {
- listener.CheckDisposed();
- return prefixes.Contains(uriPrefix);
- }
- public void CopyTo(string[] array, int offset)
- {
- listener.CheckDisposed();
- prefixes.CopyTo(array, offset);
- }
- public void CopyTo(Array array, int offset)
- {
- listener.CheckDisposed();
- ((ICollection)prefixes).CopyTo(array, offset);
- }
- public IEnumerator<string> GetEnumerator()
- {
- return prefixes.GetEnumerator();
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return prefixes.GetEnumerator();
- }
- public bool Remove(string uriPrefix)
- {
- listener.CheckDisposed();
- if (uriPrefix == null)
- throw new ArgumentNullException(nameof(uriPrefix));
- bool result = prefixes.Remove(uriPrefix);
- if (result && listener.IsListening)
- HttpEndPointManager.RemovePrefix(_logger, uriPrefix, listener);
- return result;
- }
- }
- }
|