Ejemplo n.º 1
0
        public async Task Execute(BehaviorContext <TInstance, TData> context, Behavior <TInstance, TData> next)
        {
            ConsumeEventContext <TInstance, TData> consumeContext = context.CreateConsumeContext();

            var payload = context.Data as Fault;

            InitializeContext <RequestFaulted <TRequest> > initializeContext = await MessageInitializerCache <RequestFaulted <TRequest> > .Initialize(new
            {
                context.Instance.CorrelationId,
                PayloadType = TypeMetadataCache <Fault <TRequest> > .MessageTypeNames,
                Payload     = new
                {
                    payload.FaultId,
                    payload.FaultedMessageId,
                    payload.Timestamp,
                    payload.Host,
                    payload.Exceptions
                }
            }).ConfigureAwait(false);

            object message = initializeContext.Message;

            await consumeContext.Publish(message, typeof(RequestFaulted)).ConfigureAwait(false);

            await next.Execute(context).ConfigureAwait(false);
        }
Ejemplo n.º 2
0
        Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeEventContext <TInstance> consumeContext = context.CreateConsumeContext();

            var message = _messageFactory(consumeContext);

            return(consumeContext.Publish(message, _publishPipe));
        }
Ejemplo n.º 3
0
        async Task Execute(BehaviorContext <TInstance> context)
        {
            ConsumeEventContext <TInstance> consumeContext = context.CreateConsumeContext();

            var message = _messageFactory?.Invoke(consumeContext) ?? await _asyncMessageFactory(consumeContext).ConfigureAwait(false);

            await consumeContext.Publish(message, _publishPipe).ConfigureAwait(false);
        }
Ejemplo n.º 4
0
        protected virtual async Task SendCommand(ConsumeEventContext <FutureState, TRequest> context, IPipe <SendContext <TCommand> > pipe)
        {
            var command = await CreateCommand(context).ConfigureAwait(false);

            if (DestinationAddress != null)
            {
                var endpoint = await context.GetSendEndpoint(DestinationAddress).ConfigureAwait(false);

                await endpoint.Send(command, pipe).ConfigureAwait(false);
            }
            else
            {
                await context.Publish(command, pipe).ConfigureAwait(false);
            }
        }
        public async Task Execute(BehaviorContext <TInstance, TData> context, Behavior <TInstance, TData> next)
        {
            ConsumeEventContext <TInstance, TData> consumeContext = context.CreateConsumeContext();

            InitializeContext <RequestCompleted <TData> > initializeContext = await MessageInitializerCache <RequestCompleted <TData> > .Initialize(new
            {
                context.Instance.CorrelationId,
                InVar.Timestamp,
                PayloadType = TypeMetadataCache <TData> .MessageTypeNames,
                Payload     = context.Data
            }).ConfigureAwait(false);

            object message = initializeContext.Message;

            await consumeContext.Publish(message, typeof(RequestCompleted)).ConfigureAwait(false);

            await next.Execute(context).ConfigureAwait(false);
        }
Ejemplo n.º 6
0
        public async Task Execute(BehaviorContext <FutureState, OrderFryShake> context, Behavior <FutureState, OrderFryShake> next)
        {
            ConsumeEventContext <FutureState, OrderFryShake> consumeContext = context.CreateConsumeContext();

            var orderLineId = NewId.NextGuid();

            await consumeContext.Publish <OrderFry>(new
            {
                OrderId     = context.Instance.CorrelationId,
                OrderLineId = orderLineId,
                context.Data.Size,
                __RequestId       = InVar.Id,
                __ResponseAddress = consumeContext.ReceiveContext.InputAddress
            }, context.CancellationToken);

            context.Instance.Pending.Add(orderLineId);

            await next.Execute(context);
        }
Ejemplo n.º 7
0
        public async Task Execute(BehaviorContext <FutureState, SubmitOrder> context, Behavior <FutureState, SubmitOrder> next)
        {
            if (context.Data.Fries != null)
            {
                ConsumeEventContext <FutureState, SubmitOrder> consumeContext = context.CreateConsumeContext();

                await Task.WhenAll(context.Data.Fries.Select(fry => consumeContext.Publish <OrderFry>(new
                {
                    context.Data.OrderId,
                    OrderLineId = fry.FryId,
                    fry.Size,
                    __RequestId       = InVar.Id,
                    __ResponseAddress = consumeContext.ReceiveContext.InputAddress
                }, context.CancellationToken)));

                context.Instance.Pending.UnionWith(context.Data.Fries.Select(x => x.FryId));
            }

            await next.Execute(context);
        }
Ejemplo n.º 8
0
        public async Task Execute(BehaviorContext <FutureState, SubmitOrder> context, Behavior <FutureState, SubmitOrder> next)
        {
            Burger[] burgers = context.Data.Burgers;
            if (burgers != null)
            {
                ConsumeEventContext <FutureState, SubmitOrder> consumeContext = context.CreateConsumeContext();

                await Task.WhenAll(burgers.Select(burger => consumeContext.Publish <OrderBurger>(new
                {
                    context.Data.OrderId,
                    OrderLineId       = burger.BurgerId,
                    Burger            = burger,
                    __RequestId       = InVar.Id,
                    __ResponseAddress = consumeContext.ReceiveContext.InputAddress
                }, context.CancellationToken)));

                context.Instance.Pending.UnionWith(burgers.Select(x => x.BurgerId));
            }

            await next.Execute(context);
        }
Ejemplo n.º 9
0
        public async Task Execute(BehaviorContext <TInstance, TData> context, Behavior <TInstance, TData> next)
        {
            ConsumeEventContext <TInstance, TData> consumeContext = context.CreateConsumeContext();

            var initializeContext = await MessageInitializerCache <RequestStarted <TData> > .Initialize(new
            {
                context.Instance.CorrelationId,
                consumeContext.RequestId,
                consumeContext.ResponseAddress,
                consumeContext.FaultAddress,
                consumeContext.ExpirationTime,
                PayloadType = TypeMetadataCache <TData> .MessageTypeNames,
                Payload     = context.Data
            }).ConfigureAwait(false);

            object message = initializeContext.Message;

            await consumeContext.Publish(message, typeof(RequestStarted)).ConfigureAwait(false);

            await next.Execute(context).ConfigureAwait(false);
        }