public HostCompensateContext(HostInfo host, ConsumeContext <RoutingSlip> context)
            : base(new PayloadCacheScope(context), context.CancellationToken)
        {
            _host    = host;
            _context = context;

            _timer          = Stopwatch.StartNew();
            _startTimestamp = DateTime.UtcNow;

            _routingSlip = new SanitizedRoutingSlip(context);
            if (_routingSlip.CompensateLogs.Count == 0)
            {
                throw new ArgumentException("The routingSlip must contain at least one activity log");
            }

            _compensateLog = _routingSlip.CompensateLogs.Last();

            _activityLog = _routingSlip.ActivityLogs.SingleOrDefault(x => x.ExecutionId == _compensateLog.ExecutionId);
            if (_activityLog == null)
            {
                throw new RoutingSlipException("The compensation log did not have a matching activity log entry: "
                                               + _compensateLog.ExecutionId);
            }

            _data = _routingSlip.GetCompensateLogData <TLog>();

            _publisher = new RoutingSlipEventPublisher(this, _routingSlip);
        }
 public CompensatedWithVariablesCompensationResult(CompensateContext <TLog> compensateContext, IRoutingSlipEventPublisher publisher,
                                                   CompensateLog compensateLog,
                                                   RoutingSlip routingSlip,
                                                   IDictionary <string, object> variables)
     : base(compensateContext, publisher, compensateLog, routingSlip)
 {
     _variables = variables;
 }
 public CompensatedCompensationResult(CompensateContext <TLog> compensateContext, IRoutingSlipEventPublisher publisher, CompensateLog compensateLog,
                                      RoutingSlip routingSlip)
 {
     _compensateContext = compensateContext;
     _publisher         = publisher;
     _compensateLog     = compensateLog;
     _routingSlip       = routingSlip;
     _duration          = _compensateContext.Elapsed;
 }
示例#4
0
            public SanitizedCompensateLog(CompensateLog compensateLog)
            {
                if (compensateLog.Address == null)
                {
                    throw new SerializationException("An CompensateLog CompensateAddress is required");
                }

                ExecutionId = compensateLog.ExecutionId;
                Address     = compensateLog.Address;
                Data        = compensateLog.Data ?? GetEmptyObject();
            }
 public FailedCompensationResult(CompensateContext <TLog> compensateContext, IRoutingSlipEventPublisher publisher, CompensateLog compensateLog,
                                 RoutingSlip routingSlip,
                                 Exception exception)
 {
     _compensateContext = compensateContext;
     _publisher         = publisher;
     _compensateLog     = compensateLog;
     _routingSlip       = routingSlip;
     _exception         = exception;
     _duration          = _compensateContext.ElapsedTime;
 }
        public HostCompensateContext(ConsumeContext <RoutingSlip> context)
            : base(context)
        {
            if (RoutingSlip.CompensateLogs.Count == 0)
            {
                throw new ArgumentException("The routingSlip must contain at least one activity log");
            }

            _compensateLog = RoutingSlip.CompensateLogs.Last();

            _activityLog = RoutingSlip.ActivityLogs.SingleOrDefault(x => x.ExecutionId == _compensateLog.ExecutionId);
            if (_activityLog == null)
            {
                throw new RoutingSlipException("The compensation log did not have a matching activity log entry: "
                                               + _compensateLog.ExecutionId);
            }

            _data = RoutingSlip.GetCompensateLogData <TLog>();
        }