コード例 #1
0
        private IProjectCodeProvider GetDummyProjectCodeProvider()
        {
            // TODO: In the future we may want to have a different project code provider
            // for each unknown project in the solution instead of having only one
            // representing all of them.
            var provider = OrleansProjectCodeProvider.GetProjectGrain(grainFactory, "DUMMY");

            this.Assemblies.Add("DUMMY");
            return(provider);
        }
コード例 #2
0
        public async Task ForceDeactivationOfProjects()
        {
            var tasks = new List <Task>();

            foreach (var assemblyName in this.Assemblies)
            {
                var provider = OrleansProjectCodeProvider.GetProjectGrain(grainFactory, assemblyName);
                var task     = provider.ForceDeactivationAsync();
                //await task;
                tasks.Add(task);
            }

            await Task.WhenAll(tasks);
        }
コード例 #3
0
        protected override async Task CreateProjectCodeProviderFromSourceAsync(string source, AssemblyName assemblyName)
        {
            var projectGrain          = OrleansProjectCodeProvider.GetProjectGrain(grainFactory, assemblyName);
            var projectGrainReference = projectGrain;

            if (projectGrain is ProjectCodeProviderGrainCallerWrapper)
            {
                var projectGrainWrapper = projectGrain as ProjectCodeProviderGrainCallerWrapper;
                projectGrainReference = projectGrainWrapper.AsReference();
            }

            await solutionGrain.StartObservingAsync(projectGrainReference);

            await projectGrain.SetProjectSourceAsync(source);

            this.Assemblies.Add(assemblyName);
        }
コード例 #4
0
        public override Task <IProjectCodeProvider> GetProjectCodeProviderAsync(AssemblyName assemblyName)
        {
            IProjectCodeProvider provider = null;
            var isExistingProject         = this.Assemblies.Contains(assemblyName);

            if (isExistingProject)
            {
                provider = OrleansProjectCodeProvider.GetProjectGrain(grainFactory, assemblyName);
            }
            else
            {
                provider = this.GetDummyProjectCodeProvider();
                //this.ProjectProviders.Add(assemblyName);
            }

            return(Task.FromResult(provider));
        }