Download
Represents a download in progress.
using AngleSharp.Dom;
using System.Threading;
using System.Threading.Tasks;
namespace AngleSharp.Network
{
internal sealed class Download : IDownload, ICancellable<IResponse>
{
private readonly CancellationTokenSource _cts;
private readonly Task<IResponse> _task;
private readonly Url _target;
private readonly INode _originator;
public INode Originator => _originator;
public Url Target => _target;
public Task<IResponse> Task => _task;
public bool IsRunning => _task.Status == TaskStatus.Running;
public bool IsCompleted {
get {
if (_task.Status != TaskStatus.Faulted && _task.Status != TaskStatus.RanToCompletion)
return _task.Status == TaskStatus.Canceled;
return true;
}
}
public Download(Task<IResponse> task, CancellationTokenSource cts, Url target, INode originator)
{
_task = task;
_cts = cts;
_target = target;
_originator = originator;
}
public void Cancel()
{
_cts.Cancel();
}
}
}