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);
}
}
}