public OperationWindowsService(ILogger logger, 
										IServiceOperation operation, 
										TimeSpan operationDelay,
										TimeSpan startupDelay)
        {
            _logger = logger;
            _operation = operation;
            _operationDelay = operationDelay;
            _startupDelay = startupDelay;
        }
Example #2
0
        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);
        }
Example #3
0
 /// <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);
     }
 }
Example #4
0
        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();
        }
Example #5
0
 /// <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);
 }
Example #8
0
 /// <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);
 }