示例#1
0
        // 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()));
                }
            }
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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();
        }