internal JobContext(IAlarmSource source, AlarmSourceEventArgs args) { Assertions.AssertNotNull(source, "source"); Assertions.AssertNotNull(args, "args"); AlarmSourceName = source.GetType().Name; Parameters = args.Parameters; }
private void AlarmSource_NewAlarm(object sender, AlarmSourceEventArgs e) { IAlarmSource source = (IAlarmSource)sender; Operation operation = e.Operation; if (operation == null) { Logger.Instance.LogFormat(LogType.Warning, this, Resources.AlarmSourceNoOperation, source.GetType().FullName); return; } Logger.Instance.LogFormat(LogType.Info, this, Resources.AlarmSourceReceivedOperation, operation.ToString(), sender.GetType().Name); try { if (!ShouldStoreOperation(operation)) { Logger.Instance.LogFormat(LogType.Info, this, Resources.NewAlarmIgnoringAlreadyPresentOperation, operation.OperationNumber); return; } // If there is no timestamp, use the current time. if (operation.Timestamp.Year == 1) { Logger.Instance.LogFormat(LogType.Warning, this, Resources.NewAlarmInvalidTimestamp); operation.Timestamp = DateTime.Now; } JobContext context = new JobContext(source, e); context.Phase = JobPhase.OnOperationSurfaced; _jobManager.ExecuteJobs(context, operation); operation = StoreOperation(operation); if (operation == null) { return; } Logger.Instance.LogFormat(LogType.Info, this, Resources.NewAlarmStored, operation.Id); context.Phase = JobPhase.AfterOperationStored; _jobManager.ExecuteJobs(context, operation); Logger.Instance.LogFormat(LogType.Info, this, Resources.NewAlarmHandlingFinished, operation.Id); } catch (Exception ex) { Logger.Instance.LogFormat(LogType.Warning, this, Resources.NewAlarmHandlingException); Logger.Instance.LogException(this, ex); } }