public CacheItem GetCacheItem(string key) { return(Retry(() => { var hash = GetCacheItemFileHash(key); lock (String.Intern(hash)) { var filename = _appDataFolder.Combine(_metadata, hash); if (!_appDataFolder.FileExists(filename)) { return null; } CacheItem cacheItem = null; using (var stream = _appDataFolder.OpenFile(filename)) { if (stream == null) { return null; } cacheItem = DeserializeMetadata(stream); // We compare the requested key and the one stored in the metadata // as there could be key collisions with the hashed filenames. if (!cacheItem.CacheKey.Equals(key)) { return null; } } filename = _appDataFolder.Combine(_content, hash); using (var stream = _appDataFolder.OpenFile(filename)) { if (stream == null) { return null; } using (var ms = new MemoryStream()) { stream.CopyTo(ms); cacheItem.Output = ms.ToArray(); } } return cacheItem; } })); }
public CacheItem GetCacheItem(string key) { return(Retry(() => { var filename = GetCacheItemFilename(key); if (!_appDataFolder.FileExists(filename)) { return null; } using (var stream = _appDataFolder.OpenFile(filename)) { if (stream == null) { return null; } return Deserialize(stream); } })); }
private ConfigurationCache ReadConfiguration(string hash) { if (!_hostEnvironment.IsFullTrust) { return(null); } var pathName = GetPathName(_shellSettings.Name); if (!_appDataFolder.FileExists(pathName)) { return(null); } try { var formatter = new BinaryFormatter(); using (var stream = _appDataFolder.OpenFile(pathName)) { // if the stream is empty, stop here if (stream.Length == 0) { return(null); } var oldHash = (string)formatter.Deserialize(stream); if (hash != oldHash) { Logger.Information("The cached NHibernate configuration is out of date. A new one will be re-generated."); return(null); } var oldConfig = (Configuration)formatter.Deserialize(stream); return(new ConfigurationCache { Hash = oldHash, Configuration = oldConfig }); } } catch (Exception e) { for (var scan = e; scan != null; scan = scan.InnerException) { Logger.Warning("Error reading the cached NHibernate configuration: {0}", scan.Message); } Logger.Information("A new one will be re-generated."); return(null); } }
public async Task <bool> TryWriteDataAsync(string blockName, string data) { IAppDataFolder folder = _dataFolderFactory(); string file = $@"DebugDistributedStore/{blockName}.txt"; using (Stream stream = folder.OpenFile(file)) { using (var streamWriter = new StreamWriter(stream)) { streamWriter.Write(data); } } return(await Task.FromResult(true)); }
public void Sweep() { foreach (var filename in _appDataFolder.ListFiles(_root).ToArray()) { var validUntilUtc = _cacheManager.Get(filename, context => { _signals.When(filename); using (var stream = _appDataFolder.OpenFile(filename)) { var cacheItem = FileSystemOutputCacheStorageProvider.Deserialize(stream); return(cacheItem.ValidUntilUtc); } }); if (_clock.UtcNow > validUntilUtc) { _appDataFolder.DeleteFile(filename); _signals.Trigger(filename); } } }
public void Sweep() { foreach (var filename in _appDataFolder.ListFiles(_metadata).ToArray()) { var hash = Path.GetFileName(filename); var validUntilUtc = _cacheManager.Get(hash, context => { _signals.When(hash); using (var stream = _appDataFolder.OpenFile(filename)) { var cacheItem = FileSystemOutputCacheStorageProvider.DeserializeMetadata(stream); return(cacheItem.ValidUntilUtc); } }); if (_clock.UtcNow > validUntilUtc) { _appDataFolder.DeleteFile(_appDataFolder.Combine(_metadata, hash)); _appDataFolder.DeleteFile(_appDataFolder.Combine(_content, hash)); _signals.Trigger(filename); } } }
public override void Load() { using (var stream = _appDataFolder.OpenFile(Path)) { Load(stream); } }