private object GetFromCacheOrOutside(Guid id) { bool cameFromoutside = false; var t = Stopwatch.StartNew(); var item = _dataCache.RetrieveByFunc(id, i => { cameFromoutside = true; return(_getter.GetItem(i)); }); t.Stop(); _storage.PutObject(Name, id, item); if (cameFromoutside) { _updateDependenciesByQueries.ForEach(k => k(id)); //сообщение о том, что ресурс пришел снаружи, приходит из геттера } else { _getter.StatChannel.SendMessageAboutOneResource(id, Actions.CacheGet, t.Elapsed); } _storage.ClearObject(); return(item); }
internal SecurityToken GetToken(Guid id) { Contract.Ensures(Contract.Result <SecurityToken>() != null); var context = _codeProvider.GetContext(); Debug.Assert(context != null); var key = ConvertToString(id, context.SessionCode); var token = _tokenProvider.RetrieveByFunc(key, t => GetTokenFor(id, context)) as SecurityToken; return(token); }