コード例 #1
0
        public BareBonesBuilder(IServiceCollection services)
        {
            Services = services;
            Services.AddHostedService <StartupTaskHostedService>();

            Registry = new ModuleRegistry(services);
        }
コード例 #2
0
ファイル: DownloadResolver.cs プロジェクト: microsoft/BuildXL
        /// <inheritdoc />
        public async Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            if (!string.Equals(module.Descriptor.ResolverName, Name, StringComparison.Ordinal))
            {
                return(null);
            }

            var package = CreatePackage(module.Definition);

            Contract.Assert(module.Specs.Count == 1, "This resolver generated the module, so we expect a single spec.");
            var sourceKv = module.Specs.First();

            // The in-memory generated spec is a regular DScript one, so run regular AST conversion
            var result = await FrontEndUtilities.RunAstConversionAsync(m_frontEndHost, m_context, m_logger, m_frontEndStatistics, package, sourceKv.Key);

            if (!result.Success)
            {
                return(false);
            }

            // Register the uninstantiated module
            var moduleData = new UninstantiatedModuleInfo(
                result.SourceFile,
                result.Module,
                result.QualifierSpaceId.IsValid ? result.QualifierSpaceId : m_context.QualifierTable.EmptyQualifierSpaceId);

            m_frontEndHost.ModuleRegistry.AddUninstantiatedModuleInfo(moduleData);

            return(true);
        }
コード例 #3
0
        public CoreAdminService(string moduleName, IServiceProvider serviceProvider)
        {
            _adminSiteProvider = serviceProvider.GetService <IAdminSiteProvider>();
            _logger            = serviceProvider.GetService <ILogger <CoreAdminService> >();
            _moduleRegistry    = serviceProvider.GetService <IModuleRegistry>();
            _serviceProvider   = serviceProvider;

            _serializer = new JsonSerializer();
            _serializer.NullValueHandling = NullValueHandling.Ignore;
            _serializer.Converters.Add(new Core.Common.Json.GuidConverter());


            var adminConfiguratorType = _moduleRegistry.GetModuleMetaInfoByModuleName(moduleName)?.AdminConfiguratorTypeInfo;

            if (adminConfiguratorType == null)
            {
                throw new ArgumentNullException(string.Format(Resources.AdminConfiguratorNotFound, moduleName));
            }
            _adminSite = _adminSiteProvider.GetAdminConfig(adminConfiguratorType.AsType());

            if (_adminSite.AdminType == AdminType.Entity)
            {
                _adminRepository = new AdminRepository(_adminSite, _serviceProvider);
            }
        }
コード例 #4
0
        private void ConvertExportsFile(IModuleRegistry moduleRegistry, ParsedModule module, Package package)
        {
            var exportsFileModule = ModuleLiteral.CreateFileModule(
                m_javaScriptWorkspaceResolver.ExportsFile,
                moduleRegistry,
                package,
                module.Specs[m_javaScriptWorkspaceResolver.ExportsFile].LineMap);

            // For each symbol defined in the resolver settings for exports, add all specified project outputs
            int pos = 1;

            foreach (var export in Exports)
            {
                FrontEndUtilities.AddEvaluationCallbackToFileModule(
                    exportsFileModule,
                    (context, moduleLiteral, evaluationStackFrame) =>
                    CollectProjectOutputsAsync(module.Definition.Specs, moduleLiteral.Qualifier.QualifierId, export, context.EvaluationScheduler),
                    export.FullSymbol,
                    pos);

                pos += 2;
            }

            var moduleInfo = new UninstantiatedModuleInfo(
                // We can register an empty one since we have the module populated properly
                new Script.SourceFile(
                    m_javaScriptWorkspaceResolver.ExportsFile,
                    new Declaration[] { }),
                exportsFileModule,
                Context.QualifierTable.EmptyQualifierSpaceId);

            moduleRegistry.AddUninstantiatedModuleInfo(moduleInfo);
        }
コード例 #5
0
 internal ModuleRegistryElement(
     IModuleRegistry <TKey, TService> moduleDictionary,
     IDictionary <TKey, Func <IServiceProvider, TService> > dictionary,
     TKey key)
 {
     this.registry   = moduleDictionary;
     this.dictionary = dictionary;
     this.key        = key;
 }
コード例 #6
0
        /// <summary>
        /// Constructs an uninstantiated file module denoted by a path.
        /// </summary>
        /// <remarks>
        /// This factory should only be used during parsing.
        /// </remarks>
        public static FileModuleLiteral CreateFileModule(AbsolutePath path, IModuleRegistry moduleRegistry, Package package, LineMap lineMap)
        {
            Contract.Requires(path.IsValid);
            Contract.Requires(moduleRegistry != null);
            Contract.Requires(package != null);
            Contract.Requires(lineMap != null);

            return(CreateInstantiatedFileModule(path, QualifierValue.Unqualified, ((ModuleRegistry)moduleRegistry).GlobalLiteral, package, (ModuleRegistry)moduleRegistry, lineMap: lineMap));
        }
コード例 #7
0
        /// <inheritdoc/>
        public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            // This resolver owns only one module.
            if (!module.Definition.Equals(ModuleDefinition))
            {
                return(Task.FromResult <bool?>(null));
            }

            return(Task.FromResult <bool?>(true));
        }
コード例 #8
0
ファイル: AppHost.cs プロジェクト: Sholtee/rpc.boilerplate
        public override void OnRegisterModules(IModuleRegistry registry)
        {
            if (registry is null)
            {
                throw new ArgumentNullException(nameof(registry));
            }

            base.OnRegisterModules(registry);

            registry.Register <IUserManager, UserManager>();
        }
コード例 #9
0
ファイル: PokeEngine.cs プロジェクト: Nexus87/PokeClone
        public PokeEngine(Configuration.Configuration config)         {
            config.CheckNull("config");
            Registry = new AutofacModuleRegistry();
            factory = new GraphicResources(config, Content);

            new GraphicsDeviceManager(this);

            Window.AllowUserResizing = true;
            

            Content.RootDirectory = "Content";

            Registry.RegisterModule(new GameEngineModule(factory, this));
        }
コード例 #10
0
        /// <inheritdoc/>
        public async Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            // This resolver owns only one module.
            if (!module.Definition.Equals(ModuleDefinition))
            {
                return(null);
            }

            var package = FrontEndUtilities.CreatePackage(module.Definition, Context.StringTable);

            ConvertExportsFile(moduleRegistry, module, package);
            await ConvertImportsFileAsync(package);

            return(true);
        }
コード例 #11
0
 public MongoOutbox(IMongoDatabase database, IModuleRegistry moduleRegistry, OutboxOptions outboxOptions,
                    MessagingOptions messagingOptions, IModuleClient moduleClient, IAsyncMessageDispatcher asyncMessageDispatcher,
                    ILogger <MongoOutbox> logger)
 {
     _database               = database;
     _moduleClient           = moduleClient;
     _asyncMessageDispatcher = asyncMessageDispatcher;
     _logger  = logger;
     Enabled  = outboxOptions.Enabled;
     _modules = moduleRegistry.Modules.ToArray();
     _useBackgroundDispatcher = messagingOptions.UseBackgroundDispatcher;
     _collectionName          = string.IsNullOrWhiteSpace(outboxOptions.CollectionName)
         ? "outbox"
         : outboxOptions.CollectionName;
 }
コード例 #12
0
        /// <inheritdoc />
        public async Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            Contract.Requires(module != null);
            Contract.Assert(m_resolverState == State.ResolverInitialized);
            Contract.Assert(m_owningModules != null, "Owning modules should not be null if the instance is initialized.");

            if (!m_owningModules.TryGetValue(module.Descriptor.Id, out Package package))
            {
                // Current resolver doesn't own a given module.
                return(null);
            }

            var factory  = CreateRuntimeModelFactory((Workspace)workspace);
            var tasks    = module.Specs.Select(spec => ConvertFileToEvaluationAsync(factory, spec.Key, spec.Value, package)).ToArray();
            var allTasks = await Task.WhenAll(tasks);

            return(allTasks.All(b => b));
        }
コード例 #13
0
 public DeviserControllerFactory(ILogger <DeviserControllerFactory> logger,
                                 IActionInvoker actionInvoker,
                                 IActionDescriptorCollectionProvider actionDescriptorCollectionProvider,
                                 IActionSelector actionSelector,
                                 IScopeService scopeService,
                                 IHtmlHelper htmlHelper,
                                 IModuleRepository moduleRepository,
                                 IModuleRegistry moduleRegistry)
 {
     _logger        = logger;
     _actionInvoker = actionInvoker;
     _actionDescriptorCollectionProvider = actionDescriptorCollectionProvider;
     //_actionConstraintCache = container.Resolve<ActionConstraintCache>();
     _actionSelector   = actionSelector;
     _htmlHelper       = htmlHelper;
     _moduleRepository = moduleRepository;
     _moduleRegistry   = moduleRegistry;
     _scopeService     = scopeService;
 }
コード例 #14
0
        /// <inheritdoc/>
        public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            // This resolver owns only one module.
            if (!module.Definition.Equals(ModuleDefinition))
            {
                return(Task.FromResult <bool?>(null));
            }

            var exportsFileModule = ModuleLiteral.CreateFileModule(
                m_javaScriptWorkspaceResolver.ExportsFile,
                moduleRegistry,
                FrontEndUtilities.CreatePackage(module.Definition, Context.StringTable),
                module.Specs[m_javaScriptWorkspaceResolver.ExportsFile].LineMap);

            // For each symbol defined in the resolver settings for exports, add all specified project outputs
            int pos = 1;

            foreach (var export in Exports)
            {
                FrontEndUtilities.AddEvaluationCallbackToFileModule(
                    exportsFileModule,
                    (context, moduleLiteral, evaluationStackFrame) =>
                    CollectProjectOutputsAsync(module.Definition.Specs, moduleLiteral.Qualifier.QualifierId, export),
                    export.FullSymbol,
                    pos);

                pos += 2;
            }

            var moduleInfo = new UninstantiatedModuleInfo(
                // We can register an empty one since we have the module populated properly
                new SourceFile(
                    m_javaScriptWorkspaceResolver.ExportsFile,
                    new Declaration[] {}),
                exportsFileModule,
                Context.QualifierTable.EmptyQualifierSpaceId);

            moduleRegistry.AddUninstantiatedModuleInfo(moduleInfo);

            return(Task.FromResult <bool?>(true));
        }
コード例 #15
0
        /// <inheritdoc />
        public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
        {
            if (!string.Equals(module.Descriptor.ResolverName, Name, StringComparison.Ordinal))
            {
                return(Task.FromResult <bool?>(null));
            }

            var downloadData = m_workspaceResolver.Downloads[module.Descriptor.Name];

            var package = CreatePackage(module.Definition);

            Contract.Assert(module.Specs.Count == 1, "This resolver generated the module, so we expect a single spec.");
            var sourceKv = module.Specs.First();

            var sourceFilePath = sourceKv.Key;
            var sourceFile     = sourceKv.Value;

            var currentFileModule = ModuleLiteral.CreateFileModule(
                sourceFilePath,
                moduleRegistry,
                package,
                sourceFile.LineMap);

            // Download
            var downloadSymbol        = FullSymbol.Create(m_context.SymbolTable, "download");
            var downloadResolvedEntry = new ResolvedEntry(
                downloadSymbol,
                (Context context, ModuleLiteral env, EvaluationStackFrame args) => DownloadFile(downloadData),
                // The following position is a contract right now iwtht he generated ast in the workspace resolver
                // we have to find a nicer way to handle and register these.
                TypeScript.Net.Utilities.LineInfo.FromLineAndPosition(0, 1)
                );

            currentFileModule.AddResolvedEntry(downloadSymbol, downloadResolvedEntry);
            currentFileModule.AddResolvedEntry(new FilePosition(1, sourceFilePath), downloadResolvedEntry);

            // Contents.All
            var extractedSymbol       = FullSymbol.Create(m_context.SymbolTable, "extracted");
            var contentsResolvedEntry = new ResolvedEntry(
                extractedSymbol,
                (Context context, ModuleLiteral env, EvaluationStackFrame args) => ExtractFile(downloadData),
                // The following position is a contract right now iwtht he generated ast in the workspace resolver
                // we have to find a nicer way to handle and register these.
                TypeScript.Net.Utilities.LineInfo.FromLineAndPosition(0, 3)
                );

            currentFileModule.AddResolvedEntry(extractedSymbol, contentsResolvedEntry);
            currentFileModule.AddResolvedEntry(new FilePosition(3, sourceFilePath), contentsResolvedEntry);

            var moduleInfo = new UninstantiatedModuleInfo(
                // We can register an empty one since we have the module populated properly
                new SourceFile(
                    sourceFilePath,
                    new Declaration[]
            {
            }),
                currentFileModule,
                m_context.QualifierTable.EmptyQualifierSpaceId);

            moduleRegistry.AddUninstantiatedModuleInfo(moduleInfo);

            return(Task.FromResult <bool?>(true));
        }
コード例 #16
0
 public ModuleClient(IModuleRegistry moduleRegistry, IModuleSerializer serializer)
 {
     _moduleRegistry = moduleRegistry;
     _serializer     = serializer;
 }
コード例 #17
0
 /// <summary>
 /// Same as <see cref="Instantiate"/>, but the result is presented with a more specific type (FileModuleLiteral)
 /// </summary>
 public FileModuleLiteral InstantiateFileModuleLiteral(IModuleRegistry moduleRegistry, QualifierValue qualifier)
 {
     return((FileModuleLiteral)Instantiate((ModuleRegistry)moduleRegistry, qualifier));
 }
コード例 #18
0
 public ModuleClient(IServiceProvider serviceProvider, IModuleRegistry moduleRegistry, ILogger <IModuleClient> logger)
 {
     _serviceProvider = serviceProvider;
     _moduleRegistry  = moduleRegistry;
     _logger          = logger;
 }
コード例 #19
0
ファイル: AppHost.cs プロジェクト: Sholtee/rpc
 public override void OnRegisterModules(IModuleRegistry registry)
 {
     base.OnRegisterModules(registry);
     registry.Register <ICalculator, Calculator>();
 }
コード例 #20
0
ファイル: NullResolver.cs プロジェクト: kittinap/kunnjae
 public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
 {
     Contract.Requires(module != null);
     Contract.Requires(workspace != null);
     throw new System.NotImplementedException();
 }
コード例 #21
0
 public ModuleSubscriber(IModuleRegistry moduleRegistry, IServiceProvider serviceProvider)
 {
     _moduleRegistry  = moduleRegistry;
     _serviceProvider = serviceProvider;
 }
コード例 #22
0
ファイル: MsBuildResolver.cs プロジェクト: kittinap/kunnjae
 /// <inheritdoc/>
 public Task <bool?> TryConvertModuleToEvaluationAsync(IModuleRegistry moduleRegistry, ParsedModule module, IWorkspace workspace)
 {
     // No conversion needed.
     return(Task.FromResult <bool?>(true));
 }
コード例 #23
0
 public ModuleSubscriber(IModuleRegistry registry)
 => _registry = registry;
コード例 #24
0
 public ModuleClient(IModuleRegistry moduleRegistry)
 => _moduleRegistry = moduleRegistry;
 public ComponentTypeProvider(IModuleRegistry moduleRegistry)
 {
     _moduleRegistry = moduleRegistry;
 }