Exemple #1
0
        void Load(Assembly assembly)
        {
            IEnumerable <Assembly> dependencies = assembly.GetReferencedAssemblies()
                                                  .Select(assemblyName => Assembly.Load(assemblyName));

            JsiiAssemblyAttribute attribute = assembly.GetCustomAttribute <JsiiAssemblyAttribute>();

            if (attribute == null)
            {
                return;
            }

            foreach (Assembly dependency in dependencies)
            {
                Load(dependency);
            }

            // find the .tgz resource
            var tarballResourceName = assembly.GetManifestResourceNames().FirstOrDefault(name => name.EndsWith(".tgz"));

            if (tarballResourceName == null)
            {
                throw new JsiiException("Cannot find embedded tarball resource in assembly " + assembly.GetName(), null);
            }

            IServiceProvider   serviceProvider = ServiceContainer.ServiceProvider;
            IResourceExtractor extractor       = serviceProvider.GetRequiredService <IResourceExtractor>();
            var tarballPath = extractor.ExtractResource(assembly, tarballResourceName);

            IClient client = serviceProvider.GetRequiredService <IClient>();

            client.LoadPackage(attribute.Name, attribute.Version, tarballPath);
        }
Exemple #2
0
 public void Return(IResourceExtractor resourceExtractor)
 {
     if (_objectDisposed)
     {
         throw new ObjectDisposedException(nameof(NetworkServicePool));
     }
     _resourceExtractorPool.Add(resourceExtractor);
 }
Exemple #3
0
        public JsiiRuntimeProvider(IResourceExtractor resourceExtractor)
        {
            string[] files = { ENTRYPOINT, ENTRYPOINT + ".map", "mappings.wasm" };

            // deploy embedded resources to the temp directory
            var assembly = Assembly.GetExecutingAssembly();
            foreach (var name in files)
            {
                var resourceName = "Amazon.JSII.Runtime.jsii_runtime." + name;
                var path = resourceExtractor.ExtractResource(assembly, resourceName, "jsii-runtime", name);

                if (name == ENTRYPOINT)
                {
                    JsiiRuntimePath = path;
                }
            }
        }
        internal static void Load(Assembly assembly)
        {
            if (ProcessedAssemblies.Contains(GetAssemblyKey(assembly)))
            {
                return;
            }

            var attribute = assembly.GetCustomAttribute <JsiiAssemblyAttribute>();

            if (attribute == null)
            {
                ProcessedAssemblies.Add(GetAssemblyKey(assembly));
                return;
            }

            foreach (var referencedAssembly in assembly.GetReferencedAssemblies())
            {
                var loadedReference = Assembly.Load(referencedAssembly);
                Load(loadedReference);
            }

            // find the .tgz resource
            var tarballResourceName = assembly.GetManifestResourceNames()
                                      .FirstOrDefault(name => name.EndsWith(".tgz", StringComparison.InvariantCultureIgnoreCase));

            if (tarballResourceName == null)
            {
                throw new JsiiException("Cannot find embedded tarball resource in assembly " + assembly.GetName(), null);
            }

            IServiceProvider   serviceProvider = ServiceContainer.ServiceProvider;
            IResourceExtractor extractor       = serviceProvider.GetRequiredService <IResourceExtractor>();
            var tarballPath = extractor.ExtractResource(assembly, tarballResourceName);

            IClient client = serviceProvider.GetRequiredService <IClient>();

            client.LoadPackage(attribute.Name, attribute.Version, tarballPath);

            ProcessedAssemblies.Add(GetAssemblyKey(assembly));

            string GetAssemblyKey(Assembly assemblyReference) => assemblyReference.GetName().FullName;
        }
Exemple #5
0
 public PostProcessorBlock(IResourceExtractor resourceExtractor, IResourceScope resourceScope, ILog log)
 {
     _log               = log;
     _resourceScope     = resourceScope;
     _resourceExtractor = resourceExtractor;
 }
        public BrokenLinkCollectionWorkflow(CancellationToken cancellationToken, Configurations configurations, IStatistics statistics,
                                            IHardwareMonitor hardwareMonitor, IResourceExtractor resourceExtractor, IReportWriter reportWriter, ILog log,
                                            IResourceEnricher resourceEnricher, IResourceVerifier resourceVerifier, Func <IHtmlRenderer> getHtmlRenderer)
        {
            _log = log;
            _coordinatorBlock               = new CoordinatorBlock(cancellationToken, log);
            _eventBroadcasterBlock          = new EventBroadcasterBlock(cancellationToken);
            _processingResultGeneratorBlock = new ProcessingResultGeneratorBlock(cancellationToken, resourceExtractor, log);
            _reportWriterBlock              = new ReportWriterBlock(cancellationToken, reportWriter, log);
            _resourceEnricherBlock          = new ResourceEnricherBlock(cancellationToken, resourceEnricher, log);
            _resourceVerifierBlock          = new ResourceVerifierBlock(cancellationToken, statistics, resourceVerifier, log);
            _htmlRendererBlock              = new HtmlRendererBlock(
                cancellationToken,
                statistics,
                log,
                configurations,
                hardwareMonitor,
                getHtmlRenderer
                );

            WireUpBlocks();

            void WireUpBlocks()
            {
                var generalDataflowLinkOptions = new DataflowLinkOptions {
                    PropagateCompletion = true
                };

                _coordinatorBlock.LinkTo(NullTarget <Resource>(), PropagateNullObjectsOnly <Resource>());
                _coordinatorBlock.LinkTo(_resourceEnricherBlock, generalDataflowLinkOptions);

                _resourceEnricherBlock.LinkTo(NullTarget <Resource>(), PropagateNullObjectsOnly <Resource>());
                _resourceEnricherBlock.LinkTo(_resourceVerifierBlock, generalDataflowLinkOptions);
                _resourceEnricherBlock.FailedProcessingResults.LinkTo(_coordinatorBlock);

                _resourceVerifierBlock.LinkTo(NullTarget <Resource>(), PropagateNullObjectsOnly <Resource>());
                _resourceVerifierBlock.LinkTo(_htmlRendererBlock, generalDataflowLinkOptions);
                _resourceVerifierBlock.FailedProcessingResults.LinkTo(_coordinatorBlock);
                _resourceVerifierBlock.VerificationResults.LinkTo(_reportWriterBlock);
                _resourceVerifierBlock.Events.LinkTo(_eventBroadcasterBlock);

                _htmlRendererBlock.LinkTo(NullTarget <RenderingResult>(), PropagateNullObjectsOnly <RenderingResult>());
                _htmlRendererBlock.LinkTo(_processingResultGeneratorBlock, generalDataflowLinkOptions);
                _htmlRendererBlock.VerificationResults.LinkTo(_reportWriterBlock, generalDataflowLinkOptions);
                _htmlRendererBlock.FailedProcessingResults.LinkTo(_coordinatorBlock);
                _htmlRendererBlock.Events.LinkTo(_eventBroadcasterBlock, generalDataflowLinkOptions);

                _processingResultGeneratorBlock.LinkTo(NullTarget <ProcessingResult>(), PropagateNullObjectsOnly <ProcessingResult>());
                _processingResultGeneratorBlock.LinkTo(_coordinatorBlock);

                _eventBroadcasterBlock.LinkTo(NullTarget <Event>(), PropagateNullObjectsOnly <Event>());

                Predicate <T> PropagateNullObjectsOnly <T>()
                {
                    return(@object => @object == null);
                }

                ITargetBlock <T> NullTarget <T>()
                {
                    return(DataflowBlock.NullTarget <T>());
                }
            }
        }
 public ProcessingResultGeneratorBlock(CancellationToken cancellationToken, IResourceExtractor resourceExtractor, ILog log)
     : base(cancellationToken, maxDegreeOfParallelism: 300)
 {
     _log = log;
     _resourceExtractor = resourceExtractor;
 }
 public DatabaseExtractor(IResourceExtractor extractor)
 {
     _extractor = extractor;
 }
 public ResourceFileCreator(IResourceExtractor resourceExtractor)
 {
     this.resourceExtractor = resourceExtractor;
 }