@@ -69,7 +69,7 @@ public async Task Tick(bool forceRunPromotion=false)
6969
7070 public async Task < ScheduledTask > AddScheduledTask ( Expression < Action > action , TimeSpan offsetFromNow )
7171 {
72- var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , offsetFromNow , UniqueTaskKey ( ) ) ;
72+ var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , offsetFromNow , TaskKey . CreateUnique ( ) ) ;
7373
7474 await EnqueueScheduledTask ( scheduledTask ) ;
7575
@@ -78,7 +78,7 @@ public async Task<ScheduledTask> AddScheduledTask(Expression<Action> action, Tim
7878
7979 public async Task < ScheduledTask > AddScheduledTask ( Expression < Action > action , DateTimeOffset scheduledTime )
8080 {
81- var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , scheduledTime , UniqueTaskKey ( ) ) ;
81+ var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , scheduledTime , TaskKey . CreateUnique ( ) ) ;
8282
8383 await EnqueueScheduledTask ( scheduledTask ) ;
8484
@@ -87,7 +87,7 @@ public async Task<ScheduledTask> AddScheduledTask(Expression<Action> action, Dat
8787
8888 public async Task < ScheduledTask > AddScheduledTask ( Expression < Action > action , DateTime scheduledTime )
8989 {
90- var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , scheduledTime , UniqueTaskKey ( ) ) ;
90+ var scheduledTask = new ScheduledTask ( action . ToTaskInfo ( ) , scheduledTime , TaskKey . CreateUnique ( ) ) ;
9191
9292 await EnqueueScheduledTask ( scheduledTask ) ;
9393
@@ -96,7 +96,8 @@ public async Task<ScheduledTask> AddScheduledTask(Expression<Action> action, Dat
9696
9797 public async Task < RecurringTask > AddRecurringTask ( Expression < Action > action , TimeSpan interval , string taskName )
9898 {
99- var recurringTask = new RecurringTask ( action . ToTaskInfo ( ) , interval , RecurringTaskKey ( taskName ) ) ;
99+ var recurringTask = new RecurringTask ( action . ToTaskInfo ( ) , interval ,
100+ TaskKey . CreateRecurring ( taskName ) ) ;
100101
101102 if ( await RecurringTaskDoesNotExistOrNeedsChange ( recurringTask ) )
102103 {
@@ -109,7 +110,8 @@ public async Task<RecurringTask> AddRecurringTask(Expression<Action> action, Tim
109110
110111 public async Task < RecurringTask > AddRecurringTask ( Expression < Action > action , string crontab , string taskName )
111112 {
112- var recurringTask = new RecurringTask ( action . ToTaskInfo ( ) , crontab , RecurringTaskKey ( taskName ) ) ;
113+ var recurringTask = new RecurringTask ( action . ToTaskInfo ( ) , crontab ,
114+ TaskKey . CreateRecurring ( taskName ) ) ;
113115
114116 if ( await RecurringTaskDoesNotExistOrNeedsChange ( recurringTask ) )
115117 {
@@ -124,12 +126,17 @@ public async Task<bool> CancelRecurringTask(RecurringTask recurringTask)
124126 return await CancelTask ( recurringTask . TaskKey ) ;
125127 }
126128
129+ public async Task < bool > CancelRecurringTask ( string taskName )
130+ {
131+ return await CancelTask ( TaskKey . CreateRecurring ( taskName ) ) ;
132+ }
133+
127134 public async Task < bool > CancelScheduledTask ( ScheduledTask scheduledTask )
128135 {
129136 return await CancelTask ( scheduledTask . TaskKey ) ;
130137 }
131138
132- public async Task < bool > CancelTask ( string taskKey )
139+ public async Task < bool > CancelTask ( TaskKey taskKey )
133140 {
134141 if ( LoadedCancelTaskScript == null )
135142 {
@@ -142,12 +149,25 @@ public async Task<bool> CancelTask(string taskKey)
142149 ( RedisKey ) ScheduledTasksMapKey ,
143150 } ,
144151 new [ ] {
145- ( RedisValue ) taskKey
152+ ( RedisValue ) taskKey . Value
146153 } ) ;
147154
148155 return ( bool ) didCancel ;
149156 }
150157
158+ public async Task < RecurringTask > GetRecurringTask ( TaskKey taskKey )
159+ {
160+ var serializedRecurringTask = await _taskQueue . Backend . GetMapField ( ScheduledTasksMapKey ,
161+ $ "serializedRecurringTask::{ taskKey . Value } ") ;
162+
163+ if ( string . IsNullOrEmpty ( serializedRecurringTask ) )
164+ return null ;
165+
166+ var recurringTask = JsonTaskInfoSerializer . Deserialize < RecurringTask > ( serializedRecurringTask ) ;
167+
168+ return recurringTask ;
169+ }
170+
151171 public async Task < RecurringTask > GetRecurringTask ( string taskKey )
152172 {
153173 var serializedRecurringTask = await _taskQueue . Backend . GetMapField ( ScheduledTasksMapKey ,
@@ -198,7 +218,7 @@ private async Task EnqueueRecurringTask(RecurringTask recurringTask)
198218 {
199219 var serializedTaskInfo = JsonTaskInfoSerializer . Serialize ( recurringTask . TaskInfo ) ;
200220 await _taskQueue . Backend . SetMapFields ( ScheduledTasksMapKey ,
201- ( recurringTask . TaskKey , serializedTaskInfo ) ,
221+ ( recurringTask . TaskKey . Value , serializedTaskInfo ) ,
202222 ( $ "isRecurring::{ recurringTask . TaskKey } ", true ) ,
203223 ( $ "serializedRecurringTask::{ recurringTask . TaskKey } ", JsonTaskInfoSerializer . Serialize ( recurringTask ) ) ) ;
204224
@@ -207,21 +227,21 @@ await _taskQueue.Backend.SetMapFields(ScheduledTasksMapKey,
207227 await _taskQueue . Backend . AddToOrderedSet (
208228 ScheduledTasksOrderedSetKey ,
209229 nextRunTimestamp ,
210- recurringTask . TaskKey ) ;
230+ recurringTask . TaskKey . Value ) ;
211231 }
212232
213233 private async Task EnqueueScheduledTask ( ScheduledTask scheduledTask )
214234 {
215235 var serializedTaskInfo = JsonTaskInfoSerializer . Serialize ( scheduledTask . TaskInfo ) ;
216236
217237 await _taskQueue . Backend . SetMapFields ( ScheduledTasksMapKey ,
218- ( scheduledTask . TaskKey , serializedTaskInfo ) ,
238+ ( scheduledTask . TaskKey . Value , serializedTaskInfo ) ,
219239 ( $ "isRecurring::{ scheduledTask . TaskKey } ", false ) ) ;
220240
221241 await _taskQueue . Backend . AddToOrderedSet (
222242 ScheduledTasksOrderedSetKey ,
223243 scheduledTask . ScheduledUnixTimeMilliseconds ,
224- scheduledTask . TaskKey ) ;
244+ scheduledTask . TaskKey . Value ) ;
225245 }
226246
227247 private async Task RescheduleRecurringTasks ( )
@@ -251,7 +271,7 @@ private async Task RescheduleRecurringTasks()
251271 recurringTask = JsonTaskInfoSerializer . Deserialize < RecurringTask > ( serializedRecurringTask ) ;
252272 nextRunTimestamp = recurringTask . GetNextRunTimestamp ( DateTime . UtcNow ) ;
253273
254- args . Add ( ( RedisValue ) recurringTask . TaskKey ) ;
274+ args . Add ( ( RedisValue ) recurringTask . TaskKey . Value ) ;
255275 args . Add ( ( RedisValue ) nextRunTimestamp ) ;
256276 }
257277
@@ -362,15 +382,5 @@ private string LuaScriptToCancelTask()
362382 return false
363383 " ;
364384 }
365-
366- private string UniqueTaskKey ( )
367- {
368- return $ "{ DateTimeOffset . UtcNow . ToUnixTimeMilliseconds ( ) } ::{ Guid . NewGuid ( ) . ToString ( ) } ";
369- }
370-
371- private string RecurringTaskKey ( string taskName )
372- {
373- return $ "{ nameof ( RecurringTaskKey ) } ::{ taskName } ";
374- }
375385 }
376386}
0 commit comments