public FSharpCompiler(IFunctionMetadataResolver metadataResolver, OptimizationLevel optimizationLevel, TraceWriter traceWriter)
 {
     _metadataResolver  = metadataResolver;
     _optimizationLevel = optimizationLevel;
     _traceWriter       = traceWriter;
     _hashRRegex        = new Regex(@"^\s*#r\s+", RegexOptions.Compiled | RegexOptions.IgnoreCase);
 }
Exemple #2
0
        internal DotNetFunctionInvoker(ScriptHost host,
                                       FunctionMetadata functionMetadata,
                                       Collection <FunctionBinding> inputBindings,
                                       Collection <FunctionBinding> outputBindings,
                                       IFunctionEntryPointResolver functionEntryPointResolver,
                                       FunctionAssemblyLoader assemblyLoader,
                                       ICompilationServiceFactory <ICompilationService <IDotNetCompilation>, IFunctionMetadataResolver> compilationServiceFactory,
                                       IFunctionMetadataResolver metadataResolver = null)
            : base(host, functionMetadata)
        {
            _metricsLogger = Host.ScriptConfig.HostConfig.GetService <IMetricsLogger>();
            _functionEntryPointResolver = functionEntryPointResolver;
            _assemblyLoader             = assemblyLoader;
            _metadataResolver           = metadataResolver ?? CreateMetadataResolver(host, functionMetadata, TraceWriter);
            _compilationService         = compilationServiceFactory.CreateService(functionMetadata.ScriptType, _metadataResolver);
            _inputBindings    = inputBindings;
            _outputBindings   = outputBindings;
            _triggerInputName = functionMetadata.Bindings.FirstOrDefault(b => b.IsTrigger).Name;

            InitializeFileWatcher();

            _resultProcessor = CreateResultProcessor();

            _functionLoader = new FunctionLoader <MethodInfo>(CreateFunctionTarget);

            _reloadScript = ReloadScriptAsync;
            _reloadScript = _reloadScript.Debounce();

            _onReferencesChanged = OnReferencesChanged;
            _onReferencesChanged = _onReferencesChanged.Debounce();

            _restorePackages = RestorePackages;
            _restorePackages = _restorePackages.Debounce();
        }
        internal DotNetFunctionInvoker(ScriptHost host, FunctionMetadata functionMetadata,
            Collection<FunctionBinding> inputBindings, Collection<FunctionBinding> outputBindings,
            IFunctionEntryPointResolver functionEntryPointResolver, FunctionAssemblyLoader assemblyLoader,
            ICompilationServiceFactory compilationServiceFactory, ITraceWriterFactory traceWriterFactory = null)
            : base(host, functionMetadata, traceWriterFactory)
        {
            _metricsLogger = Host.ScriptConfig.HostConfig.GetService<IMetricsLogger>();
            _functionEntryPointResolver = functionEntryPointResolver;
            _assemblyLoader = assemblyLoader;
            _metadataResolver = new FunctionMetadataResolver(functionMetadata, host.ScriptConfig.BindingProviders, TraceWriter);
            _compilationService = compilationServiceFactory.CreateService(functionMetadata.ScriptType, _metadataResolver);
            _inputBindings = inputBindings;
            _outputBindings = outputBindings;
            _triggerInputName = functionMetadata.Bindings.FirstOrDefault(b => b.IsTrigger).Name;

            InitializeFileWatcher();

            _resultProcessor = CreateResultProcessor();

            _functionLoader = new FunctionLoader<MethodInfo>(CreateFunctionTarget);

            _reloadScript = ReloadScript;
            _reloadScript = _reloadScript.Debounce();

            _restorePackages = RestorePackages;
            _restorePackages = _restorePackages.Debounce();
        }
 public FSharpCompiler(IFunctionMetadataResolver metadataResolver, OptimizationLevel optimizationLevel, TraceWriter traceWriter)
 {
     _metadataResolver = metadataResolver;
     _optimizationLevel = optimizationLevel;
     _traceWriter = traceWriter;
     _hashRRegex = new Regex(@"^\s*#r\s+", RegexOptions.Compiled | RegexOptions.IgnoreCase);
 }
        internal CSharpFunctionInvoker(ScriptHost host, FunctionMetadata functionMetadata,
            Collection<FunctionBinding> inputBindings, Collection<FunctionBinding> outputBindings,
            IFunctionEntryPointResolver functionEntryPointResolver, FunctionAssemblyLoader assemblyLoader)
            : base(host, functionMetadata)
        {
            _host = host;
            _functionEntryPointResolver = functionEntryPointResolver;
            _assemblyLoader = assemblyLoader;
            _metadataResolver = new FunctionMetadataResolver(functionMetadata, TraceWriter);
            _inputBindings = inputBindings;
            _outputBindings = outputBindings;
            _triggerInputName = GetTriggerInputName(functionMetadata);
            _metrics = host.ScriptConfig.HostConfig.GetService<IMetricsLogger>();

            InitializeFileWatcherIfEnabled();
            _resultProcessor = CreateResultProcessor();

            _functionValueLoader = FunctionValueLoader.Create(CreateFunctionTarget);

            _reloadScript = ReloadScript;
            _reloadScript = _reloadScript.Debounce();

            _restorePackages = RestorePackages;
            _restorePackages = _restorePackages.Debounce();
        }
        internal CSharpFunctionInvoker(ScriptHost host, FunctionMetadata functionMetadata,
                                       Collection <FunctionBinding> inputBindings, Collection <FunctionBinding> outputBindings,
                                       IFunctionEntryPointResolver functionEntryPointResolver, FunctionAssemblyLoader assemblyLoader)
            : base(host, functionMetadata)
        {
            _host = host;
            _functionEntryPointResolver = functionEntryPointResolver;
            _assemblyLoader             = assemblyLoader;
            _metadataResolver           = new FunctionMetadataResolver(functionMetadata, TraceWriter);
            _inputBindings    = inputBindings;
            _outputBindings   = outputBindings;
            _triggerInputName = GetTriggerInputName(functionMetadata);
            _metrics          = host.ScriptConfig.HostConfig.GetService <IMetricsLogger>();

            InitializeFileWatcherIfEnabled();
            _resultProcessor = CreateResultProcessor();

            _functionValueLoader = FunctionValueLoader.Create(CreateFunctionTarget);

            _reloadScript = ReloadScript;
            _reloadScript = _reloadScript.Debounce();

            _restorePackages = RestorePackages;
            _restorePackages = _restorePackages.Debounce();
        }
Exemple #7
0
 public DynamicFunctionAssemblyLoadContext(FunctionMetadata functionMetadata, IFunctionMetadataResolver resolver, ILogger logger)
     : base(ResolveFunctionBaseProbingPath())
 {
     _functionMetadata = functionMetadata ?? throw new ArgumentNullException(nameof(functionMetadata));
     _metadataResolver = resolver;
     _logger           = logger ?? NullLogger.Instance;
 }
 public FunctionAssemblyLoadContext(FunctionMetadata functionMetadata, Assembly functionAssembly, IFunctionMetadataResolver resolver, TraceWriter traceWriter)
 {
     _metadataResolver = resolver;
     _loadedAssemblies = ImmutableArray<Assembly>.Empty;
     _traceWriter = traceWriter;
     FunctionAssembly = functionAssembly;
     Metadata = functionMetadata;
 }
Exemple #9
0
 public FunctionAssemblyLoadContext(FunctionMetadata functionMetadata, Assembly functionAssembly, IFunctionMetadataResolver resolver, ILogger logger)
 {
     _metadataResolver = resolver;
     _loadedAssemblies = ImmutableArray <Assembly> .Empty;
     _logger           = logger;
     FunctionAssembly  = functionAssembly;
     Metadata          = functionMetadata;
 }
Exemple #10
0
        public FunctionExpressionGenerator(IFunctionMetadataResolver functionMetadataResolver,
                                           IFunctionArgumentExpressionsGenerator functionArgumentExpressionsGenerator)
        {
            _functionMetadataResolver             = functionMetadataResolver;
            _functionArgumentExpressionsGenerator = functionArgumentExpressionsGenerator;

            _createFunctionExpressionMethod = new Lazy <MethodInfo>(() => GetType().GetMethod(nameof(CreateFunctionExpression),
                                                                                              BindingFlags.Instance | BindingFlags.NonPublic));
        }
Exemple #11
0
        public ICompilationService CreateService(ScriptType scriptType, IFunctionMetadataResolver metadataResolver)
        {
            switch (scriptType)
            {
            case ScriptType.CSharp:
                return(new CSharpCompilationService(metadataResolver));

            default:
                throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture,
                                                              "The script type {0} is not supported by the {1}", scriptType, typeof(DotNetCompilationServiceFactory).Name));
            }
        }
Exemple #12
0
        public async Task SetupAsync()
        {
            ScriptPath       = Path.Combine(GetCSharpSamplePath(), BenchmarkTrigger, "run.csx");
            ScriptSource     = File.ReadAllText(ScriptPath);
            FunctionMetadata = new FunctionMetadata()
            {
                FunctionDirectory = Path.GetDirectoryName(ScriptPath),
                ScriptFile        = ScriptPath,
                Name     = BenchmarkTrigger,
                Language = DotNetScriptTypes.CSharp
            };

            Resolver           = new ScriptFunctionMetadataResolver(ScriptPath, Array.Empty <IScriptBindingProvider>(), NullLogger.Instance);
            CompilationService = new CSharpCompilationService(Resolver, OptimizationLevel.Release);

            ScriptCompilation = await CompilationService.GetFunctionCompilationAsync(FunctionMetadata);

            ScriptAssembly = await ScriptCompilation.EmitAsync(default);
        public FunctionAssemblyLoadContext CreateOrUpdateContext(FunctionMetadata metadata, Assembly functionAssembly, IFunctionMetadataResolver metadataResolver, TraceWriter traceWriter)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }
            if (functionAssembly == null)
            {
                throw new ArgumentNullException("functionAssembly");
            }
            if (metadataResolver == null)
            {
                throw new ArgumentNullException("metadataResolver");
            }
            if (traceWriter == null)
            {
                throw new ArgumentNullException("traceWriter");
            }

            var context = new FunctionAssemblyLoadContext(metadata, functionAssembly, metadataResolver, traceWriter);
            
            return _functionContexts.AddOrUpdate(metadata.Name, context, (s, o) => context);
        }
        public FunctionAssemblyLoadContext CreateOrUpdateContext(FunctionMetadata metadata, Assembly functionAssembly, IFunctionMetadataResolver metadataResolver, TraceWriter traceWriter)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }
            if (functionAssembly == null)
            {
                throw new ArgumentNullException("functionAssembly");
            }
            if (metadataResolver == null)
            {
                throw new ArgumentNullException("metadataResolver");
            }
            if (traceWriter == null)
            {
                throw new ArgumentNullException("traceWriter");
            }

            var context = new FunctionAssemblyLoadContext(metadata, functionAssembly, metadataResolver, traceWriter);

            return(_functionContexts.AddOrUpdate(metadata.Name, context, (s, o) => context));
        }
 public CSharpCompilationService(IFunctionMetadataResolver metadataResolver)
 {
     _metadataResolver = metadataResolver;
 }
 public CSharpCompilationService(IFunctionMetadataResolver metadataResolver, OptimizationLevel optimizationLevel)
 {
     _metadataResolver = metadataResolver;
     _optimizationLevel = optimizationLevel;
 }
Exemple #17
0
 public FSharpCompiler(IFunctionMetadataResolver metadataResolver, OptimizationLevel optimizationLevel)
 {
     _metadataResolver  = metadataResolver;
     _optimizationLevel = optimizationLevel;
 }
Exemple #18
0
        public FunctionAssemblyLoadContext CreateOrUpdateContext(FunctionMetadata metadata, Assembly functionAssembly, IFunctionMetadataResolver metadataResolver,
                                                                 TraceWriter traceWriter, ILoggerFactory loggerFactory)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }
            if (functionAssembly == null)
            {
                throw new ArgumentNullException("functionAssembly");
            }
            if (metadataResolver == null)
            {
                throw new ArgumentNullException("metadataResolver");
            }
            if (traceWriter == null)
            {
                throw new ArgumentNullException("traceWriter");
            }

            ILogger logger  = loggerFactory?.CreateLogger(LogCategories.Startup);
            var     context = new FunctionAssemblyLoadContext(metadata, functionAssembly, metadataResolver, traceWriter, logger);

            return(_functionContexts.AddOrUpdate(metadata.Name, context, (s, o) => context));
        }
Exemple #19
0
 public FSharpCompiler(IFunctionMetadataResolver metadataResolver)
 {
     _metadataResolver = metadataResolver;
 }
 public TestDynamicAssemblyLoadContext(WebJobs.Script.Description.FunctionMetadata functionMetadata,
                                       IFunctionMetadataResolver resolver, ILogger logger, FunctionAssemblyLoadContext sharedContext)
     : base(functionMetadata, resolver, logger)
 {
     _sharedContext = sharedContext;
 }
        public ICompilationService <IDotNetCompilation> CreateService(string language, IFunctionMetadataResolver metadata)
        {
            switch (language)
            {
            case DotNetScriptTypes.CSharp:
                return(new CSharpCompilationService(metadata, OptimizationLevel));

            case DotNetScriptTypes.DotNetAssembly:
                return(new RawAssemblyCompilationService());

            default:
                throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture,
                                                              "The language {0} is not supported by the {1}", language, typeof(DotNetCompilationServiceFactory).Name));
            }
        }