using System; using System.Net; namespace Pulsar.Common.DNS { /// /// WebClient with timeout capability /// internal class TimeoutWebClient : WebClient { private readonly int _timeout; public TimeoutWebClient(int timeout) { _timeout = timeout; this.Proxy = null; } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request != null) { request.Timeout = _timeout; } return request; } } /// /// Extension methods for WebClient /// internal static class WebClientExtensions { /// /// Creates a WebClient with the specified timeout in milliseconds /// public static WebClient WithTimeout(int timeout) { return new TimeoutWebClient(timeout); } } }