public OperationWindowsService(ILogger logger, IServiceOperation operation, TimeSpan operationDelay, TimeSpan startupDelay) { _logger = logger; _operation = operation; _operationDelay = operationDelay; _startupDelay = startupDelay; }
public bool CheckQuota(IServiceOperation <T> operation) { if (operation.Quota == null) { return(true); } var count = _cacheRepository.CountItems(operation.GetType().Name, DateTime.Now.Subtract(operation.Quota.Time)); return(count <= operation.Quota.Requests); }
/// <summary> /// Executes the specified operation. /// </summary> /// <param name="operation">The operation.</param> /// <param name="operationParameter">The operation parameter.</param> public void Execute(ServiceOperationAction operation, IServiceOperation operationParameter) { var monitoredOperation = operationParameter as IMonitoredOperation; AsyncServiceException.Assert(monitoredOperation != null, "容错行为只能应用到继承于IMonitoredOperation的操作上。"); try { operation(monitoredOperation); } catch (Exception ex) { if (!this._service.IsRunningInSafeMode) throw; else monitoredOperation.MarkAsIncomplete(ex); } }
public void Add(string service, IServiceOperation <T> operation, string parameters, string result, bool hasErrored) { DateTime?expires = null; if (operation.Expiration != null) { expires = DateTime.Now.Add((TimeSpan)operation.Expiration); } var item = new Data.Entities.Cache() { Service = service, Operation = operation.GetType().Name, Params = parameters, Result = result, Created = DateTime.Now, Expires = expires, HasErrored = hasErrored }; _context.Add(item); _context.SaveChanges(); }
/// <summary> /// Executes the queue data access handler. /// </summary> /// <param name="handler">The handler.</param> /// <param name="serviceOperation">The service operation.</param> private void ExecuteQueueDataAccessHandler(OrganizationQueueDataAccessHandler handler, IServiceOperation serviceOperation) { var queueManagementOperation = serviceOperation as QueueManagementOperation; AsyncServiceException.Assert(queueManagementOperation != null, "错误的服务操作类型。"); var organizationConfiguration = queueManagementOperation.OrganizationConfiguration; IQueueDataAccess queueDataAccess = _dataAccessFactory.CreateInstance(this, organizationConfiguration); handler(queueDataAccess, organizationConfiguration); }
/// <summary> /// Executes the operation. /// </summary> /// <param name="serviceOperation">The service operation.</param> protected virtual void ExecuteOperation(IServiceOperation serviceOperation) { serviceOperation.Execute(); }
/// <summary> /// Executes the operation. /// </summary> /// <param name="serviceOperation">The service operation.</param> protected override void ExecuteOperation(IServiceOperation serviceOperation) { base.ThrowIfCancellationRequested(this._options.CancellationToken); base.ExecuteOperation(serviceOperation); }
/// <summary> /// Applies the behavior. /// </summary> /// <param name="operation">The operation.</param> public void ApplyBehavior(IServiceOperation operation) { var monitoredOperation = operation as IMonitoredOperation; AsyncServiceException.Assert(monitoredOperation != null, "在支持容错服务上运行的操作都必须继承于IMonitoredOperation。"); monitoredOperation.ApplyOperationBehavior(new OperationBehavior(this.Execute)); }
public XmlRequestHandler(IServiceOperation <TRequest, TResponse> serviceOperation) { this.serviceOperation = serviceOperation; }
/// <summary> /// Initializes a new instance of the <see cref="TimerBasedExecutionEngine"/> class. /// </summary> /// <param name="operation">The operation.</param> /// <param name="interval">The interval.</param> public TimerBasedExecutionEngine(IServiceOperation operation, double interval) { this._operation = operation; this._timer = new Timer(this._operation.Name, interval, this.OnTimerEvent, true); }
public OperationsController(IServiceOperation serviceOperation) { _serviceOperation = serviceOperation; }
/// <summary> /// Applies the behaviors. /// </summary> /// <param name="operation">The operation.</param> private void ApplyBehaviors(IServiceOperation operation) { if (this.ServiceBehavior == null) return; this.ServiceBehavior.ApplyBehavior(operation); }