aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/format/packfile/disk_object.go
diff options
context:
space:
mode:
authorMiguel Molina <miguel@erizocosmi.co>2018-07-27 15:36:04 +0200
committerGitHub <noreply@github.com>2018-07-27 15:36:04 +0200
commit0ade8fb60e759da42f8779b2a5c8a3f422ce4d69 (patch)
tree85d416c7ab1393be6a00ca8b3851e3ff8dc3e67e /plumbing/format/packfile/disk_object.go
parentb7131019e6b2639f69623029a5a1f178bc920a4e (diff)
parentccd0fa0bc17f0680038529b00f5c5a44f8e77b41 (diff)
downloadgo-git-0ade8fb60e759da42f8779b2a5c8a3f422ce4d69.tar.gz
Merge pull request #899 from erizocosmico/feature/new-packfile
plumbing: packfile, new Packfile representation
Diffstat (limited to 'plumbing/format/packfile/disk_object.go')
-rw-r--r--plumbing/format/packfile/disk_object.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/plumbing/format/packfile/disk_object.go b/plumbing/format/packfile/disk_object.go
new file mode 100644
index 0000000..d3e8520
--- /dev/null
+++ b/plumbing/format/packfile/disk_object.go
@@ -0,0 +1,64 @@
+package packfile
+
+import (
+ "io"
+
+ "gopkg.in/src-d/go-git.v4/plumbing"
+)
+
+// DiskObject is an object from the packfile on disk.
+type DiskObject struct {
+ hash plumbing.Hash
+ h *ObjectHeader
+ offset int64
+ size int64
+ typ plumbing.ObjectType
+ packfile *Packfile
+}
+
+// NewDiskObject creates a new disk object.
+func NewDiskObject(
+ hash plumbing.Hash,
+ finalType plumbing.ObjectType,
+ offset int64,
+ contentSize int64,
+ packfile *Packfile,
+) *DiskObject {
+ return &DiskObject{
+ hash: hash,
+ offset: offset,
+ size: contentSize,
+ typ: finalType,
+ packfile: packfile,
+ }
+}
+
+// Reader implements the plumbing.EncodedObject interface.
+func (o *DiskObject) Reader() (io.ReadCloser, error) {
+ return o.packfile.getObjectContent(o.offset)
+}
+
+// SetSize implements the plumbing.EncodedObject interface. This method
+// is a noop.
+func (o *DiskObject) SetSize(int64) {}
+
+// SetType implements the plumbing.EncodedObject interface. This method is
+// a noop.
+func (o *DiskObject) SetType(plumbing.ObjectType) {}
+
+// Hash implements the plumbing.EncodedObject interface.
+func (o *DiskObject) Hash() plumbing.Hash { return o.hash }
+
+// Size implements the plumbing.EncodedObject interface.
+func (o *DiskObject) Size() int64 { return o.size }
+
+// Type implements the plumbing.EncodedObject interface.
+func (o *DiskObject) Type() plumbing.ObjectType {
+ return o.typ
+}
+
+// Writer implements the plumbing.EncodedObject interface. This method always
+// returns a nil writer.
+func (o *DiskObject) Writer() (io.WriteCloser, error) {
+ return nil, nil
+}