diff options
Diffstat (limited to 'lib/VNLib.Plugins.Extensions.Loading/src/Events')
-rw-r--r-- | lib/VNLib.Plugins.Extensions.Loading/src/Events/AsyncIntervalAttribute.cs | 44 | ||||
-rw-r--r-- | lib/VNLib.Plugins.Extensions.Loading/src/Events/EventManagment.cs | 4 |
2 files changed, 41 insertions, 7 deletions
diff --git a/lib/VNLib.Plugins.Extensions.Loading/src/Events/AsyncIntervalAttribute.cs b/lib/VNLib.Plugins.Extensions.Loading/src/Events/AsyncIntervalAttribute.cs index e8f071e..139a3ac 100644 --- a/lib/VNLib.Plugins.Extensions.Loading/src/Events/AsyncIntervalAttribute.cs +++ b/lib/VNLib.Plugins.Extensions.Loading/src/Events/AsyncIntervalAttribute.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Extensions.Loading @@ -36,12 +36,46 @@ namespace VNLib.Plugins.Extensions.Loading.Events internal readonly TimeSpan Interval; /// <summary> - /// Intializes the <see cref="AsyncIntervalAttribute"/> with the specified timeout in milliseconds + /// Initializes a new <see cref="AsyncIntervalAttribute"/> with allowing + /// a configurable /// </summary> - /// <param name="milliseconds">The interval in milliseconds</param> - public AsyncIntervalAttribute(int milliseconds) + public AsyncIntervalAttribute() + {} + + /// <summary> + /// Gets or sets the interval in seconds. Choose only ONE internval resolution + /// </summary> + public int Seconds + { + get => (int)Interval.TotalSeconds; + init => Interval = TimeSpan.FromSeconds(value); + } + + /// <summary> + /// Gets or sets the interval in milliseconds. Choose only ONE internval resolution + /// </summary> + public int MilliSeconds + { + get => (int)Interval.TotalMilliseconds; + init => Interval = TimeSpan.FromMilliseconds(value); + } + + /// <summary> + /// Gets or sets the interval in minutes. Choose only ONE internval resolution + /// </summary> + public int Minutes + { + get => (int)Interval.TotalMinutes; + init => Interval = TimeSpan.FromMinutes(value); + } + + /// <summary> + /// Gets or sets the interval in hours. Choose only ONE internval resolution + /// </summary> + public int Hours { - Interval = TimeSpan.FromMilliseconds(milliseconds); + get => (int)Interval.TotalMinutes; + init => Interval = TimeSpan.FromHours(value); } } } diff --git a/lib/VNLib.Plugins.Extensions.Loading/src/Events/EventManagment.cs b/lib/VNLib.Plugins.Extensions.Loading/src/Events/EventManagment.cs index bde6986..57e4a9c 100644 --- a/lib/VNLib.Plugins.Extensions.Loading/src/Events/EventManagment.cs +++ b/lib/VNLib.Plugins.Extensions.Loading/src/Events/EventManagment.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Extensions.Loading @@ -60,7 +60,7 @@ namespace VNLib.Plugins.Extensions.Loading.Events plugin.Log.Verbose("Interval for {t} scheduled", interval); //Run interval on plugins bg scheduler - _ = plugin.ObserveTask(() => RunIntervalOnPluginScheduler(plugin, asyncCallback, interval, immediate)); + _ = plugin.ObserveWork(() => RunIntervalOnPluginScheduler(plugin, asyncCallback, interval, immediate)); } private static async Task RunIntervalOnPluginScheduler(PluginBase plugin, AsyncSchedulableCallback callback, TimeSpan interval, bool immediate) |