aboutsummaryrefslogblamecommitdiffstats
path: root/core/storage.go
blob: cb8f45d18c50d2e566f6de86ba1f14535429242f (plain) (tree)
1
2
3
4
5
6



                                            

                                           



























                                                                              
package core

// Storage storage of objects and references
type Storage interface {
	ObjectStorage() ObjectStorage
	ReferenceStorage() ReferenceStorage
}

// ObjectStorage generic storage of objects
type ObjectStorage interface {
	NewObject() Object
	Set(Object) (Hash, error)
	Get(Hash) (Object, error)
	Iter(ObjectType) (ObjectIter, error)
}

// ObjectIter is a generic closable interface for iterating over objects.
type ObjectIter interface {
	Next() (Object, error)
	Close()
}

// ReferenceStorage generic storage of references
type ReferenceStorage interface {
	Set(*Reference) error
	Get(ReferenceName) (*Reference, error)
	Iter() (ReferenceIter, error)
}

// ReferenceIter is a generic closable interface for iterating over references
type ReferenceIter interface {
	Next() (*Reference, error)
	Close()
}