io

package
v0.4.15 Latest Latest
Warning

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

Go to latest
Published: May 10, 2018 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package io implements convenience objects for working with the ipfs unixfs data format.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrIsDir            = errors.New("this dag node is a directory")
	ErrCantReadSymlinks = errors.New("cannot currently read symlinks")
)

Common errors

View Source
var DefaultShardWidth = 256

DefaultShardWidth is the default value used for hamt sharding width.

View Source
var ErrNotADir = fmt.Errorf("merkledag node was not a directory or shard")

ErrNotADir implies that the given node was not a unixfs directory

View Source
var ShardSplitThreshold = 1000

ShardSplitThreshold specifies how large of an unsharded directory the Directory code will generate. Adding entries over this value will result in the node being restructured into a sharded object.

View Source
var UseHAMTSharding = false

UseHAMTSharding is a global flag that signifies whether or not to use the HAMT sharding scheme for directory creation

Functions

func ResolveUnixfsOnce added in v0.4.5

func ResolveUnixfsOnce(ctx context.Context, ds ipld.NodeGetter, nd ipld.Node, names []string) (*ipld.Link, []string, error)

ResolveUnixfsOnce resolves a single hop of a path through a graph in a unixfs context. This includes handling traversing sharded directories.

Types

type BufDagReader added in v0.4.14

type BufDagReader struct {
	*bytes.Reader
}

BufDagReader implements a DagReader that reads from a byte slice using a bytes.Reader. It is used for RawNodes.

func NewBufDagReader added in v0.4.5

func NewBufDagReader(b []byte) *BufDagReader

NewBufDagReader returns a DAG reader for the given byte slice. BufDagReader is used to read RawNodes.

func (*BufDagReader) Close added in v0.4.14

func (*BufDagReader) Close() error

Close is a nop.

func (*BufDagReader) CtxReadFull added in v0.4.14

func (rd *BufDagReader) CtxReadFull(ctx context.Context, b []byte) (int, error)

CtxReadFull reads the slice onto b.

func (*BufDagReader) Offset added in v0.4.14

func (rd *BufDagReader) Offset() int64

Offset returns the current offset.

func (*BufDagReader) Size added in v0.4.14

func (rd *BufDagReader) Size() uint64

Size returns the size of the buffer.

type DagReader

type DagReader interface {
	ReadSeekCloser
	Size() uint64
	CtxReadFull(context.Context, []byte) (int, error)
	Offset() int64
}

A DagReader provides read-only read and seek acess to a unixfs file. Different implementations of readers are used for the different types of unixfs/protobuf-encoded nodes.

func NewDagReader

func NewDagReader(ctx context.Context, n ipld.Node, serv ipld.NodeGetter) (DagReader, error)

NewDagReader creates a new reader object that reads the data represented by the given node, using the passed in DAGService for data retrieval

type Directory added in v0.4.8

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

Directory allows to work with UnixFS directory nodes, adding and removing children. It allows to work with different directory schemes, like the classic or the HAMT one.

func NewDirectory

func NewDirectory(dserv ipld.DAGService) *Directory

NewDirectory returns a Directory. It needs a DAGService to add the Children

func NewDirectoryFromNode added in v0.4.8

func NewDirectoryFromNode(dserv ipld.DAGService, nd ipld.Node) (*Directory, error)

NewDirectoryFromNode loads a unixfs directory from the given IPLD node and DAGService.

func (*Directory) AddChild added in v0.4.8

func (d *Directory) AddChild(ctx context.Context, name string, nd ipld.Node) error

AddChild adds a (name, key)-pair to the root node.

func (*Directory) Find added in v0.4.8

func (d *Directory) Find(ctx context.Context, name string) (ipld.Node, error)

Find returns the root node of the file named 'name' within this directory. In the case of HAMT-directories, it will traverse the tree.

func (d *Directory) ForEachLink(ctx context.Context, f func(*ipld.Link) error) error

ForEachLink applies the given function to Links in the directory.

func (*Directory) GetNode added in v0.4.8

func (d *Directory) GetNode() (ipld.Node, error)

GetNode returns the root of this Directory

func (*Directory) GetPrefix added in v0.4.12

func (d *Directory) GetPrefix() *cid.Prefix

GetPrefix returns the CID Prefix used

func (d *Directory) Links(ctx context.Context) ([]*ipld.Link, error)

Links returns the all the links in the directory node.

func (*Directory) RemoveChild added in v0.4.8

func (d *Directory) RemoveChild(ctx context.Context, name string) error

RemoveChild removes the child with the given name.

func (*Directory) SetPrefix added in v0.4.9

func (d *Directory) SetPrefix(prefix *cid.Prefix)

SetPrefix sets the prefix of the root node

type PBDagReader added in v0.4.14

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

PBDagReader provides a way to easily read the data contained in a dag.

func NewPBFileReader added in v0.4.5

func NewPBFileReader(ctx context.Context, n *mdag.ProtoNode, pb *ftpb.Data, serv ipld.NodeGetter) *PBDagReader

NewPBFileReader constructs a new PBFileReader.

func (*PBDagReader) Close added in v0.4.14

func (dr *PBDagReader) Close() error

Close closes the reader.

func (*PBDagReader) CtxReadFull added in v0.4.14

func (dr *PBDagReader) CtxReadFull(ctx context.Context, b []byte) (int, error)

CtxReadFull reads data from the DAG structured file

func (*PBDagReader) Offset added in v0.4.14

func (dr *PBDagReader) Offset() int64

Offset returns the current reader offset

func (*PBDagReader) Read added in v0.4.14

func (dr *PBDagReader) Read(b []byte) (int, error)

Read reads data from the DAG structured file

func (*PBDagReader) Seek added in v0.4.14

func (dr *PBDagReader) Seek(offset int64, whence int) (int64, error)

Seek implements io.Seeker, and will seek to a given offset in the file interface matches standard unix seek TODO: check if we can do relative seeks, to reduce the amount of dagreader recreations that need to happen.

func (*PBDagReader) Size added in v0.4.14

func (dr *PBDagReader) Size() uint64

Size return the total length of the data from the DAG structured file.

func (*PBDagReader) WriteTo added in v0.4.14

func (dr *PBDagReader) WriteTo(w io.Writer) (int64, error)

WriteTo writes to the given writer.

type ReadSeekCloser

type ReadSeekCloser interface {
	io.Reader
	io.Seeker
	io.Closer
	io.WriterTo
}

A ReadSeekCloser implements interfaces to read, copy, seek and close.

Jump to

Keyboard shortcuts

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