/// <summary> /// Recupera as entradas carregadas para o cache. /// </summary> /// <param name="typeNames">Nomes do tipos da entradas que serão carregadas.</param> /// <returns></returns> public IEnumerable <DataEntry> GetEntries(Colosoft.Reflection.TypeName[] typeNames) { typeNames.Require("typeNames").NotNull(); if (typeNames.Length == 0) { yield break; } var hashNames = typeNames.Select(f => MakeEntryFileName(f)).ToArray(); var directory = GetLocalPath(); if (System.IO.Directory.Exists(directory)) { foreach (var i in hashNames.Where(f => System.IO.File.Exists(f))) { DataEntry entry = null; System.IO.Stream stream = null; try { using (stream = System.IO.File.OpenRead(i)) { var reader = new Colosoft.Serialization.IO.CompactBinaryReader(stream, Colosoft.Text.Encoding.Default); entry = new DataEntry(); ((Colosoft.Serialization.ICompactSerializable)entry).Deserialize(reader); } } catch { continue; } yield return(entry); } } }
/// <summary> /// Recupera as versões das entradas carregadas no cache. /// </summary> /// <returns></returns> public IEnumerable <DataEntryVersion> GetEntryVersions() { var directory = GetLocalPath(); if (System.IO.Directory.Exists(directory)) { foreach (var i in System.IO.Directory.GetFiles(directory, "*.cache")) { DataEntryVersion version = null; try { using (var stream = System.IO.File.OpenRead(i)) { var reader = new Colosoft.Serialization.IO.CompactBinaryReader(stream, Colosoft.Text.Encoding.Default); version = new DataEntryVersion(); ((Colosoft.Serialization.ICompactSerializable)version).Deserialize(reader); } } catch { continue; } yield return(version); } } }
/// <summary> /// Recupera as entradas carregadas para o cache. /// </summary> /// <returns></returns> public IEnumerable <DataEntry> GetEntries() { var directory = GetLocalPath(); if (System.IO.Directory.Exists(directory)) { foreach (var i in System.IO.Directory.GetFiles(directory, "*.cache")) { DataEntry entry = null; System.IO.Stream stream = null; try { stream = System.IO.File.OpenRead(i); var reader = new Colosoft.Serialization.IO.CompactBinaryReader(stream, Colosoft.Text.Encoding.Default); entry = new DataEntry(); ((Colosoft.Serialization.ICompactSerializable)entry).Deserialize(reader); } catch { if (stream != null) { stream.Dispose(); } continue; } yield return(entry); } } }
public bool MoveNext() { _currentPosition++; if (_currentPosition >= _package._zipFile.Count) { return(false); } var zipEntry = _package._zipFile[_currentPosition]; using (var stream = _package._zipFile.GetInputStream(zipEntry)) { var outStream = new System.IO.MemoryStream((int)zipEntry.Size); var read = 0; while ((read = stream.Read(_buffer, 0, _buffer.Length)) > 0) { outStream.Write(_buffer, 0, read); } outStream.Position = 0; try { var reader = new Colosoft.Serialization.IO.CompactBinaryReader(outStream); var isNullTypeName = reader.ReadByte() == 0; Colosoft.Reflection.TypeName typeName = null; if (!isNullTypeName) { typeName = new Reflection.TypeName(); typeName.Deserialize(reader); } var version = reader.ReadDateTime(); var hasRecords = reader.ReadByte() == 1; outStream.Position = 0; _currrentStream = outStream; _current = new Tuple <DataEntryVersion, System.IO.Stream>(new DataEntryVersion { TypeName = typeName, Version = version }, outStream); } catch { outStream.Dispose(); throw; } } return(true); }