Skip to content

Commit 96fe7f8

Browse files
authored
Refactoring for HttpInvoker (#4920)
1 parent 8ff297d commit 96fe7f8

File tree

109 files changed

+1970
-1013
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+1970
-1013
lines changed

src/WebJobs.Script.Grpc/Abstractions/IWorkerProvider.cs

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/WebJobs.Script.Grpc/Abstractions/WorkerDescription.cs

Lines changed: 0 additions & 84 deletions
This file was deleted.

src/WebJobs.Script.Grpc/Abstractions/WorkerDescriptionExtensions.cs

Lines changed: 0 additions & 79 deletions
This file was deleted.

src/WebJobs.Script.WebHost/Diagnostics/SystemLoggerProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System;
55
using Microsoft.Azure.WebJobs.Logging;
66
using Microsoft.Azure.WebJobs.Script.Eventing;
7-
using Microsoft.Azure.WebJobs.Script.Rpc;
7+
using Microsoft.Azure.WebJobs.Script.OutOfProc;
88
using Microsoft.Extensions.Logging;
99
using Microsoft.Extensions.Logging.Abstractions;
1010
using Microsoft.Extensions.Options;
@@ -45,7 +45,7 @@ public ILogger CreateLogger(string categoryName)
4545

4646
private bool IsUserLogCategory(string categoryName)
4747
{
48-
return LogCategories.IsFunctionUserCategory(categoryName) || categoryName.Equals(LanguageWorkerConstants.FunctionConsoleLogCategoryName, StringComparison.OrdinalIgnoreCase);
48+
return LogCategories.IsFunctionUserCategory(categoryName) || categoryName.Equals(OutOfProcConstants.FunctionConsoleLogCategoryName, StringComparison.OrdinalIgnoreCase);
4949
}
5050

5151
public void Dispose()

src/WebJobs.Script/Config/ConfigurationSectionNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public static class ConfigurationSectionNames
1515
public const string ExtensionBundle = "extensionBundle";
1616
public const string ManagedDependency = "managedDependency";
1717
public const string Extensions = "extensions";
18+
public const string HttpInvoker = "httpInvoker";
1819
public const string Http = Extensions + ":http";
1920
public const string Hsts = Http + ":hsts";
2021
public const string CustomHttpHeaders = Http + ":customHeaders";
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the MIT License. See License.txt in the project root for license information.
3+
4+
using System.Collections.Generic;
5+
using Microsoft.Azure.WebJobs.Script.Extensibility;
6+
using Microsoft.Azure.WebJobs.Script.Rpc;
7+
using Microsoft.Extensions.Logging;
8+
9+
namespace Microsoft.Azure.WebJobs.Script.Description
10+
{
11+
internal class HttpFunctionDescriptorProvider : OutOfProcDescriptorProvider
12+
{
13+
public HttpFunctionDescriptorProvider(ScriptHost host, ScriptJobHostOptions config, ICollection<IScriptBindingProvider> bindingProviders,
14+
IFunctionDispatcher dispatcher, ILoggerFactory loggerFactory)
15+
: base(host, config, bindingProviders, dispatcher, loggerFactory)
16+
{
17+
}
18+
}
19+
}

src/WebJobs.Script/Description/Rpc/WorkerFunctionDescriptorProvider.cs renamed to src/WebJobs.Script/Description/OutOfProc/OutOfProcDescriptorProvider.cs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,17 @@
1616

1717
namespace Microsoft.Azure.WebJobs.Script.Description
1818
{
19-
internal class WorkerFunctionDescriptorProvider : FunctionDescriptorProvider
19+
internal abstract class OutOfProcDescriptorProvider : FunctionDescriptorProvider
2020
{
2121
private readonly ILoggerFactory _loggerFactory;
2222
private IFunctionDispatcher _dispatcher;
23-
private string _workerRuntime;
2423

25-
public WorkerFunctionDescriptorProvider(ScriptHost host, string workerRuntime, ScriptJobHostOptions config, ICollection<IScriptBindingProvider> bindingProviders,
24+
public OutOfProcDescriptorProvider(ScriptHost host, ScriptJobHostOptions config, ICollection<IScriptBindingProvider> bindingProviders,
2625
IFunctionDispatcher dispatcher, ILoggerFactory loggerFactory)
2726
: base(host, config, bindingProviders)
2827
{
2928
_dispatcher = dispatcher;
3029
_loggerFactory = loggerFactory;
31-
_workerRuntime = workerRuntime;
3230
}
3331

3432
public override async Task<(bool, FunctionDescriptor)> TryCreate(FunctionMetadata functionMetadata)
@@ -37,18 +35,12 @@ public WorkerFunctionDescriptorProvider(ScriptHost host, string workerRuntime, S
3735
{
3836
throw new ArgumentNullException(nameof(functionMetadata));
3937
}
40-
41-
if (!_dispatcher.IsSupported(functionMetadata, _workerRuntime))
42-
{
43-
return (false, null);
44-
}
45-
4638
return await base.TryCreate(functionMetadata);
4739
}
4840

4941
protected override IFunctionInvoker CreateFunctionInvoker(string scriptFilePath, BindingMetadata triggerMetadata, FunctionMetadata functionMetadata, Collection<FunctionBinding> inputBindings, Collection<FunctionBinding> outputBindings)
5042
{
51-
return new WorkerLanguageInvoker(Host, triggerMetadata, functionMetadata, _loggerFactory, inputBindings, outputBindings, _dispatcher);
43+
return new OutOfProcInvoker(Host, triggerMetadata, functionMetadata, _loggerFactory, inputBindings, outputBindings, _dispatcher);
5244
}
5345

5446
protected override async Task<Collection<ParameterDescriptor>> GetFunctionParametersAsync(IFunctionInvoker functionInvoker, FunctionMetadata functionMetadata,

src/WebJobs.Script/Description/Rpc/WorkerLanguageInvoker.cs renamed to src/WebJobs.Script/Description/OutOfProc/OutOfProcInvoker.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,15 @@
1111
using System.Threading;
1212
using System.Threading.Tasks;
1313
using Microsoft.Azure.WebJobs.Script.Binding;
14+
using Microsoft.Azure.WebJobs.Script.OutOfProc;
1415
using Microsoft.Azure.WebJobs.Script.Rpc;
1516
using Microsoft.CodeAnalysis;
1617
using Microsoft.Extensions.Logging;
1718
using Newtonsoft.Json.Linq;
1819

1920
namespace Microsoft.Azure.WebJobs.Script.Description
2021
{
21-
internal class WorkerLanguageInvoker : FunctionInvokerBase
22+
internal class OutOfProcInvoker : FunctionInvokerBase
2223
{
2324
private readonly Collection<FunctionBinding> _inputBindings;
2425
private readonly Collection<FunctionBinding> _outputBindings;
@@ -27,15 +28,15 @@ internal class WorkerLanguageInvoker : FunctionInvokerBase
2728
private readonly Action<ScriptInvocationResult> _handleScriptReturnValue;
2829
private readonly IFunctionDispatcher _functionDispatcher;
2930

30-
internal WorkerLanguageInvoker(ScriptHost host, BindingMetadata bindingMetadata, FunctionMetadata functionMetadata, ILoggerFactory loggerFactory,
31-
Collection<FunctionBinding> inputBindings, Collection<FunctionBinding> outputBindings, IFunctionDispatcher fuctionDispatcher)
31+
internal OutOfProcInvoker(ScriptHost host, BindingMetadata bindingMetadata, FunctionMetadata functionMetadata, ILoggerFactory loggerFactory,
32+
Collection<FunctionBinding> inputBindings, Collection<FunctionBinding> outputBindings, IFunctionDispatcher functionDispatcher)
3233
: base(host, functionMetadata, loggerFactory)
3334
{
3435
_bindingMetadata = bindingMetadata;
3536
_inputBindings = inputBindings;
3637
_outputBindings = outputBindings;
37-
_functionDispatcher = fuctionDispatcher;
38-
_logger = loggerFactory.CreateLogger<WorkerLanguageInvoker>();
38+
_functionDispatcher = functionDispatcher;
39+
_logger = loggerFactory.CreateLogger<OutOfProcInvoker>();
3940

4041
InitializeFileWatcherIfEnabled();
4142

@@ -76,10 +77,9 @@ protected override async Task<object> InvokeCore(object[] parameters, FunctionIn
7677
Logger = context.Logger
7778
};
7879

79-
ScriptInvocationResult result;
8080
_logger.LogDebug($"Sending invocation id:{invocationId}");
8181
await _functionDispatcher.InvokeAsync(invocationContext);
82-
result = await invocationContext.ResultSource.Task;
82+
ScriptInvocationResult result = await invocationContext.ResultSource.Task;
8383

8484
await BindOutputsAsync(triggerValue, context.Binder, result);
8585
return result.Return;
@@ -90,7 +90,7 @@ private async Task DelayUntilFunctionDispatcherInitialized()
9090
if (_functionDispatcher != null && _functionDispatcher.State == FunctionDispatcherState.Initializing)
9191
{
9292
_logger.LogDebug($"functionDispatcher state: {_functionDispatcher.State}");
93-
await Utility.DelayAsync(LanguageWorkerConstants.ProcessStartTimeoutSeconds, 25, () =>
93+
await Utility.DelayAsync(OutOfProcConstants.ProcessStartTimeoutSeconds, 25, () =>
9494
{
9595
return _functionDispatcher.State != FunctionDispatcherState.Initialized;
9696
});
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the MIT License. See License.txt in the project root for license information.
3+
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Threading.Tasks;
7+
using Microsoft.Azure.WebJobs.Script.Extensibility;
8+
using Microsoft.Azure.WebJobs.Script.Rpc;
9+
using Microsoft.Extensions.Logging;
10+
11+
namespace Microsoft.Azure.WebJobs.Script.Description
12+
{
13+
internal class RpcFunctionDescriptorProvider : OutOfProcDescriptorProvider
14+
{
15+
private string _workerRuntime;
16+
17+
public RpcFunctionDescriptorProvider(ScriptHost host, string workerRuntime, ScriptJobHostOptions config, ICollection<IScriptBindingProvider> bindingProviders,
18+
IFunctionDispatcher dispatcher, ILoggerFactory loggerFactory)
19+
: base(host, config, bindingProviders, dispatcher, loggerFactory)
20+
{
21+
_workerRuntime = workerRuntime;
22+
}
23+
24+
public override async Task<(bool, FunctionDescriptor)> TryCreate(FunctionMetadata functionMetadata)
25+
{
26+
if (functionMetadata == null)
27+
{
28+
throw new ArgumentNullException(nameof(functionMetadata));
29+
}
30+
31+
if (!Utility.IsFunctionMetadataLanguageSupportedByWorkerRuntime(functionMetadata, _workerRuntime))
32+
{
33+
return (false, null);
34+
}
35+
36+
return await base.TryCreate(functionMetadata);
37+
}
38+
}
39+
}
File renamed without changes.

0 commit comments

Comments
 (0)