diff options
author | Miguel Molina <miguel@erizocosmi.co> | 2018-07-27 15:36:04 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-27 15:36:04 +0200 |
commit | 0ade8fb60e759da42f8779b2a5c8a3f422ce4d69 (patch) | |
tree | 85d416c7ab1393be6a00ca8b3851e3ff8dc3e67e /plumbing/format/packfile/disk_object.go | |
parent | b7131019e6b2639f69623029a5a1f178bc920a4e (diff) | |
parent | ccd0fa0bc17f0680038529b00f5c5a44f8e77b41 (diff) | |
download | go-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.go | 64 |
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 +} |