public static async Task <HttpResponseMessage> RunAsync( HttpRequestMessage request, FunctionExecutionContext context, ILogger logger, CancellationToken ct) { var requestStartTime = DateTimeOffset.Now; var runtime = await GlobalStartup.GetRuntimeAsync(context, logger); return(await runtime.Fabric.ProcessRequestAsync(request, context, requestStartTime, logger, ct)); }
public Task InitializeAsync(CancellationToken ct) { if (!string.IsNullOrEmpty(_settings.FunctionsDirectory) && Directory.Exists(_settings.FunctionsDirectory)) { var subDirectories = Directory.GetDirectories( _settings.FunctionsDirectory, "*", SearchOption.TopDirectoryOnly); foreach (var subDirectory in subDirectories) { if (!GlobalStartup.TryGetStartupSettings(subDirectory, out var startupSettings)) { continue; } if (startupSettings.ServiceNames == null || startupSettings.ServiceNames.Count == 0) { continue; } if (!GlobalStartup.TryGetFunctionSettings(subDirectory, out var functionSettings)) { continue; } var queueBinding = functionSettings.Bindings?.SingleOrDefault(b => (string.IsNullOrEmpty(b.Direction) || b.Direction == "in") && b.Type == "queueTrigger" && !string.IsNullOrEmpty(b.QueueName)); if (queueBinding == null) { continue; } var queue = _storageAccount.QueueClient.GetQueueReference(queueBinding.QueueName); var functionName = Path.GetFileName(subDirectory); _functionToQueueMap[functionName] = queue; foreach (var serviceName in startupSettings.ServiceNames) { _serviceToQueueMap[serviceName] = queue; } } } return(Task.FromResult(true)); }
public static async Task RunAsync( byte[] content, string id, string popReceipt, int dequeueCount, DateTimeOffset insertionTime, DateTimeOffset nextVisibleTime, DateTimeOffset expirationTime, FunctionExecutionContext context, ILogger logger, CancellationToken ct) { var messageReceiveTime = DateTimeOffset.Now; var runtime = await GlobalStartup.GetRuntimeAsync(context, logger); var message = CloudQueueMessageExtensions.Create( content, id, popReceipt, dequeueCount, insertionTime, nextVisibleTime, expirationTime); await runtime.Fabric.ProcessMessageAsync(message, context, messageReceiveTime, logger, ct); }