示例#1
0
        public async Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            ParameterInfo parameter = context.Parameter;
            var           attribute = parameter.GetCustomAttribute <EdgeHubTriggerAttribute>(false);

            if (attribute == null)
            {
                return(null);
            }

            await this.TrySetEventDefaultHandlerAsync().ConfigureAwait(false);

            var messageProcessor = new EdgeHubMessageProcessor();
            var triggerBinding   = new EdgeHubTriggerBinding(context.Parameter, messageProcessor);

            this.receivers.AddOrUpdate(
                attribute.InputName.ToLowerInvariant(),
                // The function used to generate a value for an absent.
                // Creates a new List and adds the message processor
                (k) => new List <EdgeHubMessageProcessor>()
            {
                messageProcessor
            },
                // The function used to generate a new value for an existing key.
                // Adds the message processor to the key's existing list
                (k, v) =>
            {
                v.Add(messageProcessor);
                return(v);
            });

            return(triggerBinding);
        }
示例#2
0
 public EdgeHubTriggerBinding(ParameterInfo parameter, EdgeHubMessageProcessor messageProcessor)
 {
     this.parameter        = parameter;
     this.messageProcessor = messageProcessor;
     this.bindingContract  = this.CreateBindingDataContract();
 }
示例#3
0
 public Listener(ITriggeredFunctionExecutor executor, EdgeHubMessageProcessor messageProcessor)
 {
     this.executor         = executor;
     this.messageProcessor = messageProcessor;
 }