/// <summary> /// Gets a file. /// </summary> /// <param name="name">The name of the file to get.</param> /// <returns>The file.</returns> public T Get(string name) { name = name.ToLowerInvariant(); lock (Cache) { if (Cache.ContainsKey(name)) { return(Cache[name]); } if (EntriesByName.ContainsKey(name)) { var fullPath = UseContent? ("Content/" + EntriesByName[name]):(UseTS1?Path.Combine(ContentManager.TS1BasePath, EntriesByName[name]):ContentManager.GetPath(EntriesByName[name])); using (var reader = File.OpenRead(fullPath)) { T item; if (Codec == null) { item = (T)SmartCodec.Decode(reader, Path.GetExtension(fullPath)); } else { item = Codec.Decode(reader); } if (item is IFileInfoUtilizer) { ((IFileInfoUtilizer)item).SetFilename(Path.GetFileName(fullPath)); } Cache.Add(name, item); return(item); } } return(default(T)); } }
public T ThrowawayGet(Far1ProviderEntry <T> entry) { byte[] data = entry.Archive.GetEntry(entry.FarEntry); using (var stream = new MemoryStream(data, false)) { if (Codec == null) { return((T)SmartCodec.Decode(stream, Path.GetExtension(entry.FarEntry.Filename))); } T result = this.Codec.Decode(stream); return(result); } }
public T ThrowawayGet(string name) { if (EntriesByName.ContainsKey(name)) { var fullPath = UseContent ? ("Content/" + EntriesByName[name]) : (UseTS1 ? Path.Combine(ContentManager.TS1BasePath, EntriesByName[name]) : ContentManager.GetPath(EntriesByName[name])); using (var reader = File.OpenRead(fullPath)) { T item; if (Codec == null) { item = (T)SmartCodec.Decode(reader, Path.GetExtension(fullPath)); } else { item = Codec.Decode(reader); } return(item); } } return(default(T)); }
public T Get(Far1ProviderEntry <T> entry) { return(Cache.GetOrAdd(entry.FarEntry.Filename, (name) => { byte[] data = entry.Archive.GetEntry(entry.FarEntry); using (var stream = new MemoryStream(data, false)) { T result = default(T); if (Codec == null) { result = (T)SmartCodec.Decode(stream, Path.GetExtension(entry.FarEntry.Filename)); } else { result = this.Codec.Decode(stream); } if (result is IFileInfoUtilizer) { ((IFileInfoUtilizer)result).SetFilename(entry.FarEntry.Filename); } return result; } })); }