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 ¶
AddChild adds the node 'nd' under this directory giving it the name 'name'
type File ¶
type File struct {
// contains filtered or unexported fields
}
func (*File) Close ¶
Close flushes, then propogates the modified dag node up the directory structure and signals a republish to occur
func (*File) CtxReadFull ¶
Read reads into the given buffer from the current offset
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
func (*Filesystem) Close ¶
func (fs *Filesystem) Close() error
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
func (*Republisher) Run ¶
func (np *Republisher) Run(ctx context.Context)
Run is the main republisher loop
func (*Republisher) Touch ¶
func (np *Republisher) Touch()
Touch signals that an update has occurred since the last publish. Multiple consecutive touches may extend the time period before the next Publish occurs in order to more efficiently batch updates