Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }