예제 #1
0
 internal void AddRequet(long requestId, ICancellableRequest command)
 {
     if (requestId > 0)
     {
         try
         {
             _requests.TryAdd(requestId, command);
         }
         catch
         {
         }
     }
 }
예제 #2
0
        public ICancellableRequest RemoveRequest(long requestId)
        {
            ICancellableRequest command = null;

            if (requestId > 0)
            {
                try
                {
                    _requests.TryRemove(requestId, out command);
                }
                catch
                {
                }
            }

            return(command);
        }
예제 #3
0
 public void CancelTimedoutRequests()
 {
     foreach (KeyValuePair <long, ICancellableRequest> ledgerValue in _requests)
     {
         ICancellableRequest command = ledgerValue.Value;
         long requestID = ledgerValue.Key;
         if (!command.IsCancelled)
         {
             if (command.HasTimedout)
             {
                 if (command.Cancel())
                 {
                     if (_logger != null)
                     {
                         _logger.CriticalInfo("Cache.CancelExecution()", "Command : " + command.ToString() + " Request ID : " + requestID + " has been cancelled for : " + _requestSource);
                     }
                 }
             }
         }
     }
 }
예제 #4
0
        public void RegisterClientrequestsInLedger(string requestSource, ILogger logger, long requestId, ICancellableRequest command)
        {
            if (requestSource != null && !string.IsNullOrEmpty(requestSource))
            {
                RequestLedger ledger = null;
                ledger = new RequestLedger(requestSource, logger);

                ledger = _clientDictionary.GetOrAdd(requestSource, ledger);
                ledger.AddRequet(requestId, command);
            }
        }