// Public methods. /// <summary> /// Handles a compilation task event. /// </summary> public static void OnCompilationTaskEvent(object sender, CompilationLoader.CompilationTaskEventArgs args) { lock (GlobalLock) { if (CompilationEventTypeHandlers.TryGetValue(args.Type, out var hanlder)) { hanlder(args); } else { Warnings.Add(new Warning(WarningType.UknownTaskEventType, args.Type.ToString())); } } }
/// <summary> /// Handles a compilation task start event. /// </summary> private static void CompilationEventStartHandler(CompilationLoader.CompilationTaskEventArgs eventArgs) { Debug.Assert(Monitor.IsEntered(GlobalLock)); string key = CompilationTask.GenerateKey(eventArgs.ParentTaskName, eventArgs.TaskName); if (CompilationTasks.ContainsKey(key)) { Warnings.Add(new Warning(WarningType.TaskAlreadyExists, key)); return; } CompilationTasks.Add(key, new CompilationTask(eventArgs.ParentTaskName, eventArgs.TaskName)); }
/// <summary> /// Handles a compilation task end event. /// </summary> private static void CompilationEventEndHandler(CompilationLoader.CompilationTaskEventArgs eventArgs) { Debug.Assert(Monitor.IsEntered(GlobalLock)); var key = CompilationTask.GenerateKey(eventArgs.ParentTaskName, eventArgs.TaskName); if (!CompilationTasks.TryGetValue(key, out var task)) { Warnings.Add(new Warning(WarningType.TaskDoesNotExist, key)); return; } if (!task.IsInProgress()) { Warnings.Add(new Warning(WarningType.TaskAlreadyEnded, key)); return; } task.End(); }