From 46b576a16645e3e133aa5b4aeecfad76b3dd96ea Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 29 Aug 2020 14:37:17 +0530 Subject: [PATCH] ResolverTask: added for async resolution. --- DnsServerCore/Dns/ResolverTask.cs | 61 +++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 DnsServerCore/Dns/ResolverTask.cs diff --git a/DnsServerCore/Dns/ResolverTask.cs b/DnsServerCore/Dns/ResolverTask.cs new file mode 100644 index 00000000..6cce5f8d --- /dev/null +++ b/DnsServerCore/Dns/ResolverTask.cs @@ -0,0 +1,61 @@ +/* +Technitium DNS Server +Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +*/ + +using System; +using System.Threading.Tasks; +using TechnitiumLibrary.Net.Dns; + +namespace DnsServerCore.Dns +{ + class ResolverTask + { + #region variables + + readonly DateTime _createdOn; + readonly TaskCompletionSource _taskCompletionSource; + + #endregion + + #region constructor + + public ResolverTask() + { + _createdOn = DateTime.UtcNow; + _taskCompletionSource = new TaskCompletionSource(); + } + + #endregion + + #region public + + public bool IsStuck(int timeout) + { + return (DateTime.UtcNow - _createdOn).TotalMilliseconds > timeout; + } + + #endregion + + #region properties + + public TaskCompletionSource TaskCompletionSource + { get { return _taskCompletionSource; } } + + #endregion + } +}