storer

package
v4.0.0-rc4+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2016 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const MaxResolveRecursion = 1024

Variables

View Source
var ErrMaxResolveRecursion = errors.New("max. recursion level reached")

ErrMaxResolveRecursion is returned by ResolveReference is MaxResolveRecursion is exceeded

View Source
var (
	//ErrStop is used to stop a ForEach function in an Iter
	ErrStop = errors.New("stop iter")
)

Functions

func ForEachIterator

func ForEachIterator(iter bareIterator, cb func(plumbing.Object) error) error

ForEachIterator is a helper function to build iterators without need to rewrite the same ForEach function each time.

func ResolveReference

func ResolveReference(s ReferenceStorer, n plumbing.ReferenceName) (*plumbing.Reference, error)

ResolveReference resolve a SymbolicReference to a HashReference

Types

type IndexStorer

type IndexStorer interface {
	SetIndex(*index.Index) error
	Index() (*index.Index, error)
}

IndexStorer generic storage of index.Index

type MultiObjectIter

type MultiObjectIter struct {
	// contains filtered or unexported fields
}

MultiObjectIter implements ObjectIter. It iterates over several ObjectIter,

The MultiObjectIter must be closed with a call to Close() when it is no longer needed.

func (*MultiObjectIter) Close

func (iter *MultiObjectIter) Close()

Close releases any resources used by the iterator.

func (*MultiObjectIter) ForEach

func (iter *MultiObjectIter) ForEach(cb func(plumbing.Object) error) error

ForEach call the cb function for each object contained on this iter until an error happends or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.

func (*MultiObjectIter) Next

func (iter *MultiObjectIter) Next() (plumbing.Object, error)

Next returns the next object from the iterator, if one iterator reach io.EOF is removed and the next one is used.

type ObjectIter

type ObjectIter interface {
	Next() (plumbing.Object, error)
	ForEach(func(plumbing.Object) error) error
	Close()
}

ObjectIter is a generic closable interface for iterating over objects.

func NewMultiObjectIter

func NewMultiObjectIter(iters []ObjectIter) ObjectIter

NewMultiObjectIter returns an object iterator for the given slice of objects.

type ObjectLookupIter

type ObjectLookupIter struct {
	// contains filtered or unexported fields
}

ObjectLookupIter implements ObjectIter. It iterates over a series of object hashes and yields their associated objects by retrieving each one from object storage. The retrievals are lazy and only occur when the iterator moves forward with a call to Next().

The ObjectLookupIter must be closed with a call to Close() when it is no longer needed.

func NewObjectLookupIter

func NewObjectLookupIter(
	storage ObjectStorer, t plumbing.ObjectType, series []plumbing.Hash) *ObjectLookupIter

NewObjectLookupIter returns an object iterator given an object storage and a slice of object hashes.

func (*ObjectLookupIter) Close

func (iter *ObjectLookupIter) Close()

Close releases any resources used by the iterator.

func (*ObjectLookupIter) ForEach

func (iter *ObjectLookupIter) ForEach(cb func(plumbing.Object) error) error

ForEach call the cb function for each object contained on this iter until an error happends or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.

func (*ObjectLookupIter) Next

func (iter *ObjectLookupIter) Next() (plumbing.Object, error)

Next returns the next object from the iterator. If the iterator has reached the end it will return io.EOF as an error. If the object can't be found in the object storage, it will return plumbing.ErrObjectNotFound as an error. If the object is retreieved successfully error will be nil.

type ObjectSliceIter

type ObjectSliceIter struct {
	// contains filtered or unexported fields
}

ObjectSliceIter implements ObjectIter. It iterates over a series of objects stored in a slice and yields each one in turn when Next() is called.

The ObjectSliceIter must be closed with a call to Close() when it is no longer needed.

func NewObjectSliceIter

func NewObjectSliceIter(series []plumbing.Object) *ObjectSliceIter

NewObjectSliceIter returns an object iterator for the given slice of objects.

func (*ObjectSliceIter) Close

func (iter *ObjectSliceIter) Close()

Close releases any resources used by the iterator.

func (*ObjectSliceIter) ForEach

func (iter *ObjectSliceIter) ForEach(cb func(plumbing.Object) error) error

ForEach call the cb function for each object contained on this iter until an error happends or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.

func (*ObjectSliceIter) Next

func (iter *ObjectSliceIter) Next() (plumbing.Object, error)

Next returns the next object from the iterator. If the iterator has reached the end it will return io.EOF as an error. If the object is retreieved successfully error will be nil.

type ObjectStorer

type ObjectStorer interface {
	// NewObject returns a new plumbing.Object, the real type of the object can
	// be a custom implementation or the defaul one, plumbing.MemoryObject
	NewObject() plumbing.Object
	// SetObject save an object into the storage, the object shuld be create
	// with the NewObject, method, and file if the type is not supported.
	SetObject(plumbing.Object) (plumbing.Hash, error)
	// Object get an object by hash with the given plumbing.ObjectType.
	// Implementors should return (nil, plumbing.ErrObjectNotFound) if an object
	// doesn't exist with both the given hash and object type.
	//
	// Valid plumbing.ObjectType values are CommitObject, BlobObject, TagObject,
	// TreeObject and AnyObject. If plumbing.AnyObject is given, the object must
	// be looked up regardless of its type.
	Object(plumbing.ObjectType, plumbing.Hash) (plumbing.Object, error)
	// IterObjects returns a custom ObjectIter over all the object on the
	// storage.
	//
	// Valid plumbing.ObjectType values are CommitObject, BlobObject, TagObject,
	IterObjects(plumbing.ObjectType) (ObjectIter, error)
}

ObjectStorer generic storage of objects

type PackfileWriter

type PackfileWriter interface {
	// PackfileWriter retuns a writer for writing a packfile to the storage
	//
	// If the Storer not implements PackfileWriter the objects should be written
	// using the Set method.
	PackfileWriter() (io.WriteCloser, error)
}

PackfileWriter is a optional method for ObjectStorer, it enable direct write of packfile to the storage

type ReferenceIter

type ReferenceIter interface {
	Next() (*plumbing.Reference, error)
	ForEach(func(*plumbing.Reference) error) error
	Close()
}

ReferenceIter is a generic closable interface for iterating over references

type ReferenceSliceIter

type ReferenceSliceIter struct {
	// contains filtered or unexported fields
}

ReferenceSliceIter implements ReferenceIter. It iterates over a series of references stored in a slice and yields each one in turn when Next() is called.

The ReferenceSliceIter must be closed with a call to Close() when it is no longer needed.

func NewReferenceSliceIter

func NewReferenceSliceIter(series []*plumbing.Reference) *ReferenceSliceIter

NewReferenceSliceIter returns a reference iterator for the given slice of objects.

func (*ReferenceSliceIter) Close

func (iter *ReferenceSliceIter) Close()

Close releases any resources used by the iterator.

func (*ReferenceSliceIter) ForEach

func (iter *ReferenceSliceIter) ForEach(cb func(*plumbing.Reference) error) error

ForEach call the cb function for each reference contained on this iter until an error happends or the end of the iter is reached. If ErrStop is sent the iteration is stop but no error is returned. The iterator is closed.

func (*ReferenceSliceIter) Next

func (iter *ReferenceSliceIter) Next() (*plumbing.Reference, error)

Next returns the next reference from the iterator. If the iterator has reached the end it will return io.EOF as an error.

type ReferenceStorer

type ReferenceStorer interface {
	SetReference(*plumbing.Reference) error
	Reference(plumbing.ReferenceName) (*plumbing.Reference, error)
	IterReferences() (ReferenceIter, error)
}

ReferenceStorer generic storage of references

type Transaction

type Transaction interface {
	SetObject(plumbing.Object) (plumbing.Hash, error)
	Object(plumbing.ObjectType, plumbing.Hash) (plumbing.Object, error)
	Commit() error
	Rollback() error
}

Transaction is an in-progress storage transaction. A transaction must end with a call to Commit or Rollback.

type Transactioner

type Transactioner interface {
	// Begin starts a transaction.
	Begin() Transaction
}

Transactioner is a optional method for ObjectStorer, it enable transaction base write and read operations in the storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL