internal NotifyRenderPackagesReadyAsyncTask(DynamoScheduler scheduler)
     : base(scheduler)
 {
 }
 internal SetTraceDataAsyncTask(DynamoScheduler scheduler)
     : base(scheduler)
 {
 }
Example #3
0
 internal InconsequentialAsyncTask(DynamoScheduler scheduler, int punch)
     : base(scheduler)
 {
     Punch = punch;
 }
Example #4
0
 internal ErrorProneAsyncTask(DynamoScheduler scheduler, int value)
     : base(scheduler)
 {
     Value = value;
 }
Example #5
0
 internal SampleAsyncTask(DynamoScheduler scheduler)
     : base(scheduler)
 {
 }
Example #6
0
 internal PrioritizedAsyncTask(DynamoScheduler scheduler, int priority)
     : base(scheduler)
 {
     CurrPriority = priority; // Assign task priority.
 }
Example #7
0
 internal void OnTaskStateChanged(
     DynamoScheduler scheduler,
     TaskStateChangedEventArgs e)
 {
     AddToResultList(e.Task.ToString(), e.CurrentState);
 }
Example #8
0
        public void TestTaskStateChangedEventHandling()
        {
            var observer        = new TaskEventObserver();
            var schedulerThread = new SampleSchedulerThread();
            var scheduler       = new DynamoScheduler(schedulerThread, TaskProcessMode.Asynchronous);

            scheduler.TaskStateChanged += observer.OnTaskStateChanged;

            // Start scheduling a bunch of tasks.
            var asyncTasks = new AsyncTask[]
            {
                new ErrorProneAsyncTask(scheduler, 7),
                new InconsequentialAsyncTask(scheduler, 100),
                new PrioritizedAsyncTask(scheduler, 1),
                new PrioritizedAsyncTask(scheduler, 5),
                new ErrorProneAsyncTask(scheduler, 3),
                new InconsequentialAsyncTask(scheduler, 500),
                new InconsequentialAsyncTask(scheduler, 300),
                new PrioritizedAsyncTask(scheduler, 3),
                new ErrorProneAsyncTask(scheduler, 5),
            };

            foreach (SampleAsyncTask asyncTask in asyncTasks)
            {
                scheduler.ScheduleForExecution(asyncTask);
            }

            schedulerThread.GetSchedulerToProcessTasks();

            // Drops all InconsequentialAsyncTask and leave behind one.
            // Kept all PrioritizedAsyncTask instances and sorted them.
            var expected = new List <string>
            {
                // Scheduling notifications...

                "Scheduled: ErrorProneAsyncTask: 7",
                "Scheduled: InconsequentialAsyncTask: 100",
                "Scheduled: PrioritizedAsyncTask: 1",
                "Scheduled: PrioritizedAsyncTask: 5",
                "Scheduled: ErrorProneAsyncTask: 3",
                "Scheduled: InconsequentialAsyncTask: 500",
                "Scheduled: InconsequentialAsyncTask: 300",
                "Scheduled: PrioritizedAsyncTask: 3",
                "Scheduled: ErrorProneAsyncTask: 5",

                // Task discarded notifications...

                "Discarded: InconsequentialAsyncTask: 100",
                "Discarded: InconsequentialAsyncTask: 300",

                // Execution of remaining tasks...

                "ExecutionStarting: ErrorProneAsyncTask: 7",
                "ExecutionFailed: ErrorProneAsyncTask: 7",
                "CompletionHandled: ErrorProneAsyncTask: 7",

                "ExecutionStarting: PrioritizedAsyncTask: 1",
                "ExecutionCompleted: PrioritizedAsyncTask: 1",
                "CompletionHandled: PrioritizedAsyncTask: 1",

                "ExecutionStarting: PrioritizedAsyncTask: 5",
                "ExecutionCompleted: PrioritizedAsyncTask: 5",
                "CompletionHandled: PrioritizedAsyncTask: 5",

                "ExecutionStarting: ErrorProneAsyncTask: 3",
                "ExecutionFailed: ErrorProneAsyncTask: 3",
                "CompletionHandled: ErrorProneAsyncTask: 3",

                "ExecutionStarting: PrioritizedAsyncTask: 3",
                "ExecutionCompleted: PrioritizedAsyncTask: 3",
                "CompletionHandled: PrioritizedAsyncTask: 3",

                "ExecutionStarting: ErrorProneAsyncTask: 5",
                "ExecutionFailed: ErrorProneAsyncTask: 5",
                "CompletionHandled: ErrorProneAsyncTask: 5",

                // Execution of InconsequentialAsyncTask last...

                "ExecutionStarting: InconsequentialAsyncTask: 500",
                "ExecutionCompleted: InconsequentialAsyncTask: 500",
                "CompletionHandled: InconsequentialAsyncTask: 500"
            };

            Assert.AreEqual(expected.Count, observer.Results.Count());

            int index = 0;

            foreach (var actual in observer.Results)
            {
                Assert.AreEqual(expected[index++], actual);
            }
        }
Example #9
0
 internal void GrabTimeStamp(DynamoScheduler scheduler)
 {
     // Get the time-stamp value from the scheduler.
     this.TimeStampValue = scheduler.NextTimeStamp;
     this.doneEvent.Set(); // Done with grabbing.
 }
Example #10
0
 public void Initialize(DynamoScheduler owningScheduler)
 {
     scheduler = owningScheduler;
 }
 internal NotifyRenderPackagesReadyAsyncTask(DynamoScheduler scheduler)
     : base(scheduler)
 {
 }
 internal CompileCustomNodeAsyncTask(DynamoScheduler scheduler)
     : base(scheduler)
 {
 }
Example #13
0
        /// <summary>
        /// Load a WorkspaceModel from json. If the WorkspaceModel is a HomeWorkspaceModel
        /// it will be set as the current workspace.
        /// </summary>
        /// <param name="json"></param>
        public static WorkspaceModel LoadWorkspaceFromJson(string json, LibraryServices libraryServices,
                                                           EngineController engineController, DynamoScheduler scheduler, NodeFactory factory,
                                                           bool isTestMode, bool verboseLogging, CustomNodeManager manager)
        {
            var settings = new JsonSerializerSettings
            {
                Error = (sender, args) =>
                {
                    args.ErrorContext.Handled = true;
                    Console.WriteLine(args.ErrorContext.Error);
                },
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                TypeNameHandling      = TypeNameHandling.Auto,
                Formatting            = Formatting.Indented,
                Converters            = new List <JsonConverter> {
                    new ConnectorConverter(),
                    new AnnotationConverter(),
                    new WorkspaceConverter(engineController, scheduler, factory, isTestMode, verboseLogging),
                    new NodeModelConverter(manager, libraryServices),
                },
                ReferenceResolverProvider = () => { return(new IdReferenceResolver()); }
            };

            var result = ReplaceTypeDeclarations(json, true);
            var ws     = JsonConvert.DeserializeObject <WorkspaceModel>(result, settings);

            return(ws);
        }