Documentation ¶
Overview ¶
Package object implements repository support for content-addressable objects of arbitrary size.
Index ¶
Constants ¶
const DefaultSplitter = "DYNAMIC-4M-BUZHASH"
DefaultSplitter is the name of the splitter used by default for new repositories.
Variables ¶
var ErrObjectNotFound = errors.New("object not found")
ErrObjectNotFound is returned when an object cannot be found.
var SupportedSplitters []string
SupportedSplitters is a list of supported object splitters.
Functions ¶
This section is empty.
Types ¶
type Format ¶
type Format struct {
Splitter string `json:"splitter,omitempty"` // splitter used to break objects into pieces of content
}
Format describes the format of objects in a repository.
type HasObjectID ¶
type HasObjectID interface {
ObjectID() ID
}
HasObjectID exposes the identifier of an object.
type ID ¶
type ID string
ID is an identifier of a repository object. Repository objects can be stored.
- In a single content block, this is the most common case for small objects.
- In a series of content blocks with an indirect block pointing at them (multiple indirections are allowed). This is used for larger files. Object IDs using indirect blocks start with "I"
func DirectObjectID ¶
DirectObjectID returns direct object ID based on the provided block ID.
func IndirectObjectID ¶
IndirectObjectID returns indirect object ID based on the underlying index object ID.
func (ID) IndexObjectID ¶
IndexObjectID returns the object ID of the underlying index object.
type Manager ¶
type Manager struct { Format Format // contains filtered or unexported fields }
Manager implements a content-addressable storage on top of blob storage.
func NewObjectManager ¶
func NewObjectManager(ctx context.Context, bm contentManager, f Format, opts ManagerOptions) (*Manager, error)
NewObjectManager creates an ObjectManager with the specified content manager and format.
func (*Manager) NewWriter ¶
func (om *Manager) NewWriter(ctx context.Context, opt WriterOptions) Writer
NewWriter creates an ObjectWriter for writing to the repository.
type ManagerOptions ¶
type ManagerOptions struct {
Trace func(message string, args ...interface{})
}
ManagerOptions specifies object manager options.
type Reader ¶
Reader allows reading, seeking, getting the length of and closing of a repository object.
type Splitter ¶
Splitter determines when to split a given object. It must return true if the object should be split after byte b is processed.
type SplitterFactory ¶
type SplitterFactory func() Splitter
SplitterFactory creates instances of Splitter
func GetSplitterFactory ¶
func GetSplitterFactory(name string) SplitterFactory
GetSplitterFactory gets splitter factory with a specified name or nil if not found.
type Writer ¶
type Writer interface { io.WriteCloser Result() (ID, error) }
Writer allows writing content to the storage and supports automatic deduplication and encryption of written data.
type WriterOptions ¶
type WriterOptions struct { Description string Prefix content.ID // empty string or a single-character ('g'..'z') }
WriterOptions can be passed to Repository.NewWriter()