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 HostCompensation(IConsumeContext <RoutingSlip> context) { _context = context; _routingSlip = new SanitizedRoutingSlip(context); if (_routingSlip.ActivityLogs.Count == 0) { throw new ArgumentException("The routingSlip must contain at least one activity log"); } _activityLog = _routingSlip.ActivityLogs.Last(); _log = _routingSlip.GetActivityLog <TLog>(); }
public HostExecution(IConsumeContext <RoutingSlip> context, Uri compensationAddress) { _context = context; _compensationAddress = compensationAddress; _routingSlip = new SanitizedRoutingSlip(context); if (_routingSlip.Itinerary.Count == 0) { throw new ArgumentException("The routingSlip must contain at least one activity"); } _activityTrackingNumber = NewId.NextGuid(); _activity = _routingSlip.Itinerary[0]; _arguments = _routingSlip.GetActivityArguments <TArguments>(); }
public HostExecuteContext(HostInfo host, Uri compensationAddress, ConsumeContext <RoutingSlip> context) { _host = host; _compensationAddress = compensationAddress; _context = context; _timer = Stopwatch.StartNew(); NewId newId = NewId.Next(); _executionId = newId.ToGuid(); _timestamp = newId.Timestamp; _routingSlip = new SanitizedRoutingSlip(context); if (_routingSlip.Itinerary.Count == 0) { throw new ArgumentException("The routingSlip must contain at least one activity"); } _activity = _routingSlip.Itinerary[0]; _arguments = _routingSlip.GetActivityArguments <TArguments>(); _publisher = new RoutingSlipEventPublisher(this, _routingSlip); }