Exemplo n.º 1
0
        /// <inheritdoc />
        public async Task Execute(IFlowHandlerContext context, IYieldPoint yieldPoint)
        {
            if (!(yieldPoint is DelegateYieldPoint executableYieldPoint))
            {
                throw new YieldPointException($"Yield point is required in controller {context.Controller.GetType().Name} for method {context.Method.Name}");
            }

            FlowContext flowContext        = null;
            var         disposeFlowContext = false;

            try
            {
                var messageContext = context.ControllerMessageContext;
                if (messageContext == null || !messageContext.Get(ContextItems.FlowContext, out flowContext))
                {
                    flowContext = new FlowContext
                    {
                        HandlerContext = context
                    };

                    // If we ended up here it is because of a Start. No point in storing the new FlowContext
                    // in the messageContext as the yield point is the last to execute.
                    disposeFlowContext = true;
                }

                try
                {
                    await executableYieldPoint.Execute(flowContext);
                }
                catch (YieldPointException e)
                {
                    // Useful for debugging
                    e.Data["Tapeti.Controller.Name"]   = context.Controller.GetType().FullName;
                    e.Data["Tapeti.Controller.Method"] = context.Method.Name;
                    throw;
                }

                flowContext.EnsureStoreOrDeleteIsCalled();
            }
            finally
            {
                if (disposeFlowContext)
                {
                    flowContext.Dispose();
                }
            }
        }
Exemplo n.º 2
0
        public async Task Execute(IMessageContext context, IYieldPoint yieldPoint)
        {
            var executableYieldPoint = yieldPoint as DelegateYieldPoint;

            if (executableYieldPoint == null)
            {
                throw new YieldPointException($"Yield point is required in controller {context.Controller.GetType().Name} for method {context.Binding.Method.Name}");
            }

            FlowContext flowContext;
            object      flowContextItem;

            if (!context.Items.TryGetValue(ContextItems.FlowContext, out flowContextItem))
            {
                flowContext = new FlowContext
                {
                    MessageContext = context
                };

                context.Items.Add(ContextItems.FlowContext, flowContext);
            }
            else
            {
                flowContext = (FlowContext)flowContextItem;
            }


            try
            {
                if (executableYieldPoint != null)
                {
                    await executableYieldPoint.Execute(flowContext);
                }
            }
            catch (YieldPointException e)
            {
                // Useful for debugging
                e.Data["Tapeti.Controller.Name"]   = context.Controller.GetType().FullName;
                e.Data["Tapeti.Controller.Method"] = context.Binding.Method.Name;
                throw;
            }

            flowContext.EnsureStoreOrDeleteIsCalled();
        }
Exemplo n.º 3
0
        public async Task <IActionResult> YieldPoint([FromServices] IYieldPoint yieldPoint, [FromBody] PostData data)
        {
            try
            {
                var runDate = data.ForDate ?? DateTime.Today.Date;

                Logger.LogInformation(default(EventId), message: $"Retrieving Yield Point data for {runDate}; assets classes: {data.AssetClasses}; currencies: {data.Currencies}.");

                var result = await yieldPoint
                             .GetYieldPointRecords(runDate, data.AssetClasses, data.Currencies)
                             .ConfigureAwait(false);

                Logger.LogInformation(default(EventId), message: $"Exit YieldPoint: retrieved {result.Count} records.");
                return(new OkObjectResult(result));
            }
            catch (Exception ex)
            {
                Logger.LogError(default(EventId), message: "Unexpected Exception:", exception: ex);
                return(this.StatusCode(500, $"Unexpected Exception: {ex}"));
            }
        }
Exemplo n.º 4
0
        private static Task HandleYieldPoint(IMessageContext context, IYieldPoint yieldPoint)
        {
            var flowHandler = context.DependencyResolver.Resolve <IFlowHandler>();

            return(flowHandler.Execute(context, yieldPoint));
        }
Exemplo n.º 5
0
        private static Task HandleYieldPoint(IControllerMessageContext context, IYieldPoint yieldPoint)
        {
            var flowHandler = context.Config.DependencyResolver.Resolve <IFlowHandler>();

            return(flowHandler.Execute(new FlowHandlerContext(context), yieldPoint));
        }