Beispiel #1
0
        async Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeContext consumeContext;

            if (!context.TryGetPayload(out consumeContext))
            {
                throw new ContextException("The consume context could not be retrieved.");
            }

            var consumeEventContext = new AutomatonymousConsumeEventContext <TInstance>(context, consumeContext);

            TMessage message = _messageFactory(consumeEventContext);

            MessageSchedulerContext schedulerContext;

            if (!consumeContext.TryGetPayload(out schedulerContext))
            {
                throw new ContextException("The scheduler context could not be retrieved.");
            }

            var scheduledMessage = await schedulerContext.ScheduleSend(message, _schedule.Delay, _sendPipe);

            var previousTokenId = _schedule.GetTokenId(context.Instance);

            if (previousTokenId.HasValue)
            {
                await schedulerContext.CancelScheduledSend(previousTokenId.Value);
            }

            _schedule?.SetTokenId(context.Instance, scheduledMessage.TokenId);
        }
        async Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeContext consumeContext;

            if (!context.TryGetPayload(out consumeContext))
            {
                throw new ContextException("The consume context could not be retrieved.");
            }

            var consumeEventContext = new AutomatonymousConsumeEventContext <TInstance>(context, consumeContext);

            TMessage message = _messageFactory(consumeEventContext);

            await consumeContext.Publish(message, _publishPipe);
        }
        async Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeContext consumeContext;

            if (!context.TryGetPayload(out consumeContext))
            {
                throw new ArgumentException("The ConsumeContext was not available");
            }

            var consumeEventContext = new AutomatonymousConsumeEventContext <TInstance>(context, consumeContext);

            TRequest requestMessage = _messageFactory(consumeEventContext);

            await SendRequest(context, consumeContext, requestMessage);
        }
        async Task Activity <TInstance, TData> .Execute(BehaviorContext <TInstance, TData> context, Behavior <TInstance, TData> next)
        {
            ConsumeContext <TData> consumeContext;

            if (!context.TryGetPayload(out consumeContext))
            {
                throw new ContextException("The consume context could not be retrieved.");
            }

            var consumeEventContext = new AutomatonymousConsumeEventContext <TInstance, TData>(context, consumeContext);

            TMessage message = _messageFactory(consumeEventContext);

            await consumeContext.RespondAsync(message, _responsePipe);

            await next.Execute(context);
        }