Пример #1
0
        public Task <CciModuleSource> GetWhiteSourceAsync(string moduleName)
        {
            CciModuleSource cciModuleSource = TryTake(moduleName);

            if (cciModuleSource != null)
            {
                _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Taken immediately: " + cciModuleSource.Guid);
                return(Task.FromResult(cciModuleSource));
            }
            else
            {
                var client = new WhiteClient(moduleName);
                if (_error != null)
                {
                    client.Tcs.SetException(_error);
                    _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Error occurred.");
                }
                else
                {
                    _clients.Enqueue(client);
                    _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Enqueued waiting client.");
                }
                return(client.Tcs.Task);
            }
        }
Пример #2
0
 public Task<CciModuleSource> GetWhiteSourceAsync(string moduleName)
 {
     
     CciModuleSource cciModuleSource = TryTake(moduleName);
     if (cciModuleSource != null)
     {
         _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Taken immediately: "+ cciModuleSource.Guid);
         return Task.FromResult(cciModuleSource);
     }
     else
     {
         var client = new WhiteClient(moduleName);
         if (_error != null)
         {
             client.Tcs.SetException(_error);
             _log.Debug("Whitecache#" + PrintCacheState(_moduleNameToFileName[moduleName]) + "Error occurred.");
         }
         else
         {
             _clients.Enqueue(client);
             _log.Debug("Whitecache#"+ PrintCacheState(_moduleNameToFileName[moduleName]) +"Enqueued waiting client.");
         }
         return client.Tcs.Task;
     }
 }