Documentation
¶
Overview ¶
package ipnsfs implements an in memory model of a mutable ipns filesystem, to be used by the fuse filesystem.
It consists of four main structs:
- The Filesystem The filesystem serves as a container and entry point for the ipns filesystem
- KeyRoots KeyRoots represent the root of the keyspace controlled by a given keypair
- Directories
- Files
Index ¶
- Variables
- type Directory
- func (d *Directory) AddChild(name string, nd *dag.Node) error
- func (d *Directory) Child(name string) (FSNode, error)
- func (d *Directory) GetNode() (*dag.Node, error)
- func (d *Directory) List() []string
- func (d *Directory) Lock()
- func (d *Directory) Mkdir(name string) (*Directory, error)
- func (d *Directory) Type() NodeType
- func (d *Directory) Unlink(name string) error
- func (d *Directory) Unlock()
- type FSNode
- type File
- func (fi *File) Close() error
- func (fi *File) CtxReadFull(ctx context.Context, b []byte) (int, error)
- func (fi *File) GetNode() (*dag.Node, error)
- func (fi *File) Lock()
- func (fi *File) Read(b []byte) (int, error)
- func (fi *File) Seek(offset int64, whence int) (int64, error)
- func (fi *File) Size() (int64, error)
- func (fi *File) Sync() error
- func (fi *File) Truncate(size int64) error
- func (fi *File) Type() NodeType
- func (fi *File) Unlock()
- func (fi *File) Write(b []byte) (int, error)
- func (fi *File) WriteAt(b []byte, at int64) (int, error)
- type Filesystem
- type KeyRoot
- type NodeType
- type Republisher
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidChild = errors.New("invalid child node")
var ErrIsDirectory = errors.New("error: is a directory")
var ErrNotYetImplemented = errors.New("not yet implemented")
Functions ¶
This section is empty.
Types ¶
type Directory ¶
type Directory struct {
// contains filtered or unexported fields
}
func NewDirectory ¶
func NewDirectory(name string, node *dag.Node, parent childCloser, fs *Filesystem) *Directory
func (*Directory) AddChild ¶
func (d *Directory) AddChild(name string, nd *dag.Node) error
AddChild adds the node 'nd' under this directory giving it the name 'name'
type FSNode ¶
type FSNode interface {
GetNode() (*dag.Node, error)
Type() NodeType
Lock()
Unlock()
}
FSNode represents any node (directory, root, or file) in the ipns filesystem
type File ¶
type File struct {
// contains filtered or unexported fields
}
func NewFile ¶
func NewFile(name string, node *dag.Node, parent childCloser, fs *Filesystem) (*File, error)
NewFile returns a NewFile object with the given parameters
func (*File) Close ¶
func (fi *File) Close() error
Close flushes, then propogates the modified dag node up the directory structure and signals a republish to occur
func (*File) CtxReadFull ¶
func (fi *File) CtxReadFull(ctx context.Context, b []byte) (int, error)
Read reads into the given buffer from the current offset
func (*File) GetNode ¶
func (fi *File) GetNode() (*dag.Node, error)
GetNode returns the dag node associated with this file
func (*File) Read ¶
func (fi *File) Read(b []byte) (int, error)
Read reads into the given buffer from the current offset
func (*File) Seek ¶
func (fi *File) Seek(offset int64, whence int) (int64, error)
Seek implements io.Seeker
func (*File) Truncate ¶
func (fi *File) Truncate(size int64) error
Truncate truncates the file to size
type Filesystem ¶
type Filesystem struct {
// contains filtered or unexported fields
}
Filesystem is the writeable fuse filesystem structure
func NewFilesystem ¶
func NewFilesystem(ctx context.Context, ds dag.DAGService, nsys namesys.NameSystem, pins pin.Pinner, keys ...ci.PrivKey) (*Filesystem, error)
NewFilesystem instantiates an ipns filesystem using the given parameters and locally owned keys
type KeyRoot ¶
type KeyRoot struct {
// contains filtered or unexported fields
}
KeyRoot represents the root of a filesystem tree pointed to by a given keypair
type Republisher ¶
type Republisher struct {
TimeoutLong time.Duration
TimeoutShort time.Duration
Publish chan struct{}
// contains filtered or unexported fields
}
Republisher manages when to publish the ipns entry associated with a given key
func NewRepublisher ¶
func NewRepublisher(root *KeyRoot, tshort, tlong time.Duration) *Republisher
NewRepublisher creates a new Republisher object to republish the given keyroot using the given short and long time intervals