public Stream GetObject(long offset, string objectType) { if (!histogram.TryAdd(offset, 1)) { histogram[offset] += 1; } if (this.cache.TryOpen(offset, out Stream stream)) { return(stream); } GitPackObjectType packObjectType; switch (objectType) { case "commit": packObjectType = GitPackObjectType.OBJ_COMMIT; break; case "tree": packObjectType = GitPackObjectType.OBJ_TREE; break; case "blob": packObjectType = GitPackObjectType.OBJ_BLOB; break; default: throw new GitException(); } var packStream = this.GetPackStream(); Stream objectStream = GitPackReader.GetObject(this, packStream, offset, objectType, packObjectType); return(this.cache.Add(offset, objectStream)); }
public Stream GetObject(int offset, string objectType) { if (!histogram.TryAdd(offset, 1)) { histogram[offset] += 1; } if (this.cache.TryOpen(offset, out Stream stream)) { return(stream); } GitPackObjectType packObjectType; switch (objectType) { case "commit": packObjectType = GitPackObjectType.OBJ_COMMIT; break; case "tree": packObjectType = GitPackObjectType.OBJ_TREE; break; case "blob": packObjectType = GitPackObjectType.OBJ_BLOB; break; default: throw new GitException(); } Stream packStream = File.OpenRead(Path.Combine(this.repository.ObjectDirectory, "pack", $"{this.name}.pack")); Stream objectStream = GitPackReader.GetObject(this, packStream, offset, objectType, packObjectType); return(this.cache.Add(offset, objectStream)); }