/******************** Reminder Management Method ********************/ public async Task ReceiveReminderAsync(string reminderName, byte[] context, TimeSpan duelTIme, TimeSpan period) { // Unregister the Received Reminder await UnregisterReminderAsync(GetReminder( reminderName )); switch (reminderName) { case ReminderNames.AnalyseBeginReminder: try { await onAnalyseBeginAsync(); // Set the Reminder for the method that implements the core logic of the Actor (mainAnalyseAsync) await RegisterReminderAsync(ReminderNames.AnalyseReminder); } catch { await RegisterReminderAsync(ReminderNames.AnalyseBeginReminder); } break; case ReminderNames.AnalyseReminder: try { bool isDone = await mainAnalyseAsync(); if (isDone == true) { await RegisterReminderAsync(ReminderNames.AnalyseCompleteReminder); } else { await RegisterReminderAsync(ReminderNames.AnalyseReminder, null, TimeSpan.FromMilliseconds(textsRequestRetryTime), TimeSpan.FromMilliseconds(textsRequestRetryTime)); } } catch { await RegisterReminderAsync(ReminderNames.AnalyseReminder); } break; case ReminderNames.AnalyseCompleteReminder: try { await onAnalyseCompleteAsync(); // Notify the MasterActor that the job was done IMasterActor theMasterActor = ActorProxy.Create <IMasterActor>(this.Id); await theMasterActor.UpdateSearchRequestStatus(Status.Analysing_Done, TheSourceID); } catch { await RegisterReminderAsync(ReminderNames.AnalyseCompleteReminder); } break; default: // This point should never be reached. throw new InvalidOperationException("Unknown Reminder: " + reminderName); } }
public async Task <IHttpActionResult> PostSearchRequest(BaseSearchRequest baseSearchRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } BESearchRequest theSearchRequest; BESearchRequest newBESearchRequest = new BESearchRequest(baseSearchRequest); try { theSearchRequest = await dbHandlerService.StoreOrUpdateSearchRequest(newBESearchRequest); IMasterActor theMasterActor = ActorProxy.Create <IMasterActor>(new ActorId(theSearchRequest.ID)); await theMasterActor.FulfillSearchRequestAsync(theSearchRequest); } catch { return(InternalServerError()); } return(Ok()); }