blob

package
v0.0.0-...-6608488 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2013 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Package blob defines types to refer to and retrieve low-level Camlistore blobs.

Index

Constants

View Source
const Pattern = `\b([a-z][a-z0-9]*)-([a-f0-9]+)\b`

Pattern is the regular expression which matches a blobref. It does not contain ^ or $.

Variables

This section is empty.

Functions

func NewHash

func NewHash() hash.Hash

NewHash returns a new hash.Hash of the currently recommended hash type. Currently this is just SHA-1, but will likely change within the next year or so.

func ValidRefString

func ValidRefString(s string) bool

Types

type ChanPeeker

type ChanPeeker struct {
	Ch <-chan SizedRef
	// contains filtered or unexported fields
}

TODO: use Generics if/when available

func (*ChanPeeker) Closed

func (cp *ChanPeeker) Closed() bool

func (*ChanPeeker) ConsumeAll

func (cp *ChanPeeker) ConsumeAll()

func (*ChanPeeker) MustPeek

func (cp *ChanPeeker) MustPeek() SizedRef

func (*ChanPeeker) MustTake

func (cp *ChanPeeker) MustTake() SizedRef

func (*ChanPeeker) Peek

func (cp *ChanPeeker) Peek() (sr SizedRef, ok bool)

func (*ChanPeeker) Take

func (cp *ChanPeeker) Take() (sr SizedRef, ok bool)

type DirFetcher

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

func NewConfigDirFetcher

func NewConfigDirFetcher() *DirFetcher

func NewSimpleDirectoryFetcher

func NewSimpleDirectoryFetcher(dir string) *DirFetcher

func (*DirFetcher) Fetch

func (df *DirFetcher) Fetch(r Ref) (file types.ReadSeekCloser, size int64, err error)

func (*DirFetcher) FetchStreaming

func (df *DirFetcher) FetchStreaming(r Ref) (file io.ReadCloser, size int64, err error)

type MemoryStore

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

MemoryStore stores blobs in memory and is a Fetcher and StreamingFetcher. Its zero value is usable.

func (*MemoryStore) AddBlob

func (s *MemoryStore) AddBlob(hashtype crypto.Hash, data string) (Ref, error)

func (*MemoryStore) FetchStreaming

func (s *MemoryStore) FetchStreaming(b Ref) (file io.ReadCloser, size int64, err error)

type Ref

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

Ref is a reference to a Camlistore blob. It is used as a value type and supports equality (with ==) and the ability to use it as a map key.

func MustParse

func MustParse(s string) Ref

MustParse parse s as a blobref and panics on failure.

func Parse

func Parse(s string) (ref Ref, ok bool)

Parse parse s as a blobref and returns the ref and whether it was parsed successfully.

func ParseOrZero

func ParseOrZero(s string) Ref

Parse parse s as a blobref. If s is invalid, a zero Ref is returned which can be tested with the Valid method.

func RefFromHash

func RefFromHash(h hash.Hash) Ref

RefFromHash returns a blobref representing the given hash. It panics if the hash isn't of a known type.

func SHA1FromBytes

func SHA1FromBytes(b []byte) Ref

SHA1FromBytes returns a SHA-1 blobref of the provided bytes.

func SHA1FromString

func SHA1FromString(s string) Ref

SHA1FromString returns a SHA-1 blobref of the provided string.

func (Ref) Digest

func (r Ref) Digest() string

Digest returns the lower hex digest of the blobref, without the e.g. "sha1-" prefix. It panics if r is zero.

func (Ref) DigestPrefix

func (r Ref) DigestPrefix(digits int) string

func (Ref) DomID

func (r Ref) DomID() string

func (Ref) Hash

func (r Ref) Hash() hash.Hash

Hash returns a new hash.Hash of r's type. It panics if r is zero.

func (Ref) HashMatches

func (r Ref) HashMatches(h hash.Hash) bool

func (Ref) HashName

func (r Ref) HashName() string

HashName returns the lowercase hash function name of the reference. It panics if r is zero.

func (Ref) IsSupported

func (r Ref) IsSupported() bool

func (Ref) MarshalBinary

func (r Ref) MarshalBinary() (data []byte, err error)

MarshalBinary implements Go's encoding.BinaryMarshaler interface.

func (Ref) MarshalJSON

func (r Ref) MarshalJSON() ([]byte, error)

func (Ref) String

func (r Ref) String() string

func (Ref) Sum32

func (r Ref) Sum32() uint32

func (Ref) Sum64

func (r Ref) Sum64() uint64

func (*Ref) UnmarshalBinary

func (r *Ref) UnmarshalBinary(data []byte) error

UnmarshalBinary implements Go's encoding.BinaryUnmarshaler interface.

func (*Ref) UnmarshalJSON

func (r *Ref) UnmarshalJSON(d []byte) error

func (Ref) Valid

func (r Ref) Valid() bool

type SeekFetcher

type SeekFetcher interface {
	// Fetch returns a blob.  If the blob is not found then
	// os.ErrNotExist should be returned for the error (not a wrapped
	// error with a ErrNotExist inside)
	//
	// The caller should close blob.
	Fetch(Ref) (blob types.ReadSeekCloser, size int64, err error)
}

func NewSerialFetcher

func NewSerialFetcher(fetchers ...SeekFetcher) SeekFetcher

func SeekerFromStreamingFetcher

func SeekerFromStreamingFetcher(f StreamingFetcher) SeekFetcher

SeekerFromStreamingFetcher returns the most efficient implementation of a seeking fetcher from a provided streaming fetcher.

type SeekTester

type SeekTester interface {
	IsFetcherASeeker() bool
}

SeekTester is the interface implemented by storage implementations that don't know until runtime whether or not their StreamingFetcher happens to also return a ReadCloser that's also a ReadSeekCloser.

type SizedRef

type SizedRef struct {
	Ref
	Size int64
}

SizedRef is like a Ref but includes a size. It should also be used as a value type and supports equality.

func (SizedRef) String

func (sr SizedRef) String() string

type StreamingFetcher

type StreamingFetcher interface {
	// FetchStreaming returns a blob.  If the blob is not found then
	// os.ErrNotExist should be returned for the error (not a wrapped
	// error with a ErrNotExist inside)
	//
	// The caller should close blob.
	FetchStreaming(Ref) (blob io.ReadCloser, size int64, err error)
}

func NewSerialStreamingFetcher

func NewSerialStreamingFetcher(fetchers ...StreamingFetcher) StreamingFetcher

Jump to

Keyboard shortcuts

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