Documentation ¶
Index ¶
- Variables
- func UnmarshalToBlocks(in []byte) ([]blocks.Block, error)
- type DagServEntry
- type DirectoryData
- func (d *DirectoryData) AddBlocks(ctx context.Context, blks []blocks.Block)
- func (d *DirectoryData) AddFile(ctx context.Context, name string, c cid.Cid, length uint64) error
- func (d *DirectoryData) AddFileFromLinks(ctx context.Context, name string, links []format.Link) (cid.Cid, error)
- func (d *DirectoryData) MarshalBinary(ctx context.Context) ([]byte, error)
- func (d *DirectoryData) Node() (format.Node, error)
- func (d *DirectoryData) UnmarshalBinary(ctx context.Context, in []byte) error
- type DirectoryDetail
- type DirectoryTree
- func (t DirectoryTree) Add(ctx context.Context, dir *model.Directory) error
- func (t DirectoryTree) Cache() map[model.DirectoryID]*DirectoryDetail
- func (t DirectoryTree) Get(dirID model.DirectoryID) *DirectoryDetail
- func (t DirectoryTree) Has(dirID model.DirectoryID) bool
- func (t DirectoryTree) Resolve(ctx context.Context, dirID model.DirectoryID) (*format.Link, error)
- type DummyNode
- func (f DummyNode) Cid() cid.Cid
- func (f DummyNode) Copy() ipld.Node
- func (f DummyNode) Links() []*ipld.Link
- func (f DummyNode) Loggable() map[string]any
- func (f DummyNode) RawData() []byte
- func (f DummyNode) Resolve(path []string) (any, []string, error)
- func (f DummyNode) ResolveLink(path []string) (*ipld.Link, []string, error)
- func (f DummyNode) Size() (uint64, error)
- func (f DummyNode) Stat() (*ipld.NodeStat, error)
- func (f DummyNode) String() string
- func (f DummyNode) Tree(path string, depth int) []string
- type RecordedDagService
- func (r *RecordedDagService) Add(ctx context.Context, node format.Node) error
- func (r *RecordedDagService) AddMany(ctx context.Context, nodes []format.Node) error
- func (r *RecordedDagService) Get(ctx context.Context, c cid.Cid) (format.Node, error)
- func (r *RecordedDagService) GetMany(ctx context.Context, cids []cid.Cid) <-chan *format.NodeOption
- func (r *RecordedDagService) Remove(ctx context.Context, c cid.Cid) error
- func (r *RecordedDagService) RemoveMany(ctx context.Context, cids []cid.Cid) error
- func (r *RecordedDagService) ResetVisited()
- func (r *RecordedDagService) Visit(ctx context.Context, c cid.Cid)
Constants ¶
This section is empty.
Variables ¶
var ErrDummyNode error = errors.New("fake dummy Node")
Functions ¶
func UnmarshalToBlocks ¶ added in v0.3.0
UnmarshalToBlocks decodes a byte slice into a slice of blocks. The input byte slice is expected to represent compressed CBOR encoded binary data of directoryData.
The function first decompresses the input byte slice and then decodes it using CBOR to obtain directoryData which contains information about real and additional blocks. These blocks are then reconstructed and returned.
Parameters:
- in: A byte slice representing the compressed CBOR encoded binary of the directoryData.
Returns:
- A slice of blocks reconstructed from the input byte slice.
- An error, if any occurred during the decompression, decoding or block reconstruction process.
Types ¶
type DagServEntry ¶ added in v0.5.0
type DirectoryData ¶ added in v0.1.0
type DirectoryData struct {
// contains filtered or unexported fields
}
DirectoryData represents a structured directory in a content-addressed file system. It manages the underlying data and provides methods for interacting with this data as a hierarchical directory structure.
Fields:
- dir: The current representation of the directory, implementing the uio.Directory interface.
- bstore: The blockstore used to store and retrieve blocks of data associated with the directory.
- node: The cached format.Node representation of the current directory.
- nodeDirty : A flag indicating whether the cached node representation is potentially outdated and needs to be refreshed from the internal directory representation.
func NewDirectoryData ¶ added in v0.1.0
func NewDirectoryData() DirectoryData
NewDirectoryData creates and initializes a new DirectoryData instance. This function:
- Creates a new in-memory map datastore.
- Initializes a new blockstore with the created datastore.
- Initializes a new DAG service with the blockstore.
- Creates a new directory with the DAG service and sets its CID (Content Identifier) builder.
Returns:
- DirectoryData : A new DirectoryData instance with the initialized directory, blockstore, and a dirty node flag set to true.
func (*DirectoryData) AddBlocks ¶ added in v0.3.0
func (d *DirectoryData) AddBlocks(ctx context.Context, blks []blocks.Block)
AddBlocks adds an array of blocks to the underlying blockstore of the DirectoryData instance.
Parameters:
- ctx: Context that allows for asynchronous task cancellation.
- blks: An array of blocks that need to be added to the blockstore.
Returns:
- error: The error encountered during the operation, if any.
This function is a wrapper that delegates the block adding task to the blockstore instance associated with the DirectoryData instance.
func (*DirectoryData) AddFile ¶ added in v0.3.0
AddFile adds a new file to the directory with the specified name, content identifier (CID), and length. It creates a new dummy node with the provided length and CID, and then adds this node as a child to the current directory under the given name.
Parameters:
- ctx : Context used to control cancellations or timeouts.
- name : Name of the file to be added to the directory.
- c : Content Identifier (CID) of the file to be added.
- length : The length of the file in bytes.
Returns:
error : An error is returned if adding the child to the directory fails, otherwise it returns nil.
func (*DirectoryData) AddFileFromLinks ¶ added in v0.3.0
func (d *DirectoryData) AddFileFromLinks(ctx context.Context, name string, links []format.Link) (cid.Cid, error)
AddFileFromLinks constructs a new file from a set of links and adds it to the directory. It first assembles the file from the provided links, then adds this file as a child to the current directory with the specified name. The assembled file and its constituent blocks are stored in the associated blockstore.
Parameters:
- ctx : Context used to control cancellations or timeouts.
- name : Name of the file to be added to the directory.
- links : Slice of format.Link that define the file to be assembled and added.
Returns:
- cid.Cid : Content Identifier (CID) of the added file if successful.
- error : An error is returned if assembling the file from links fails, adding the child to the directory fails, or putting blocks into the blockstore fails. Otherwise, it returns nil.
func (*DirectoryData) MarshalBinary ¶ added in v0.1.0
func (d *DirectoryData) MarshalBinary(ctx context.Context) ([]byte, error)
MarshalBinary encodes the DirectoryData into a binary format using CBOR and then compresses the result.
The method reconstructs the directory using the DagService, determines which blocks have been visited, and constructs a representation containing both dummy and real data from the directory.
Parameters:
- ctx: A context to allow for timeout or cancellation of operations.
Returns:
- A byte slice representing the compressed CBOR encoded binary of the DirectoryData.
- An error, if any occurred during the encoding or compression process.
func (*DirectoryData) Node ¶ added in v0.1.0
func (d *DirectoryData) Node() (format.Node, error)
Node retrieves the format.Node representation of the current DirectoryData. If the node representation is marked as dirty (meaning it is potentially outdated), this method:
- Calls GetNode on the internal directory to refresh the node representation.
- Updates the internal node field with this new node.
- Resets the dirty flag to false, indicating that the node is now up to date.
Returns:
- format.Node : The current node representation of the directory, or nil if an error occurs.
- error : An error is returned if getting the Node from the internal directory fails. Otherwise, it returns nil.
func (*DirectoryData) UnmarshalBinary ¶ added in v0.3.0
func (d *DirectoryData) UnmarshalBinary(ctx context.Context, in []byte) error
UnmarshalBinary deserializes binary data into the current DirectoryData object. This method:
- Creates a new blockstore and DAG service.
- Checks if the input data is empty. If it is, initializes the DirectoryData with a new empty directory and returns.
- Otherwise, it unmarshalls the input data into blocks and a root CID.
- Puts these blocks into the blockstore.
- Retrieves the root directory node from the DAG service using the root CID.
- Constructs a new directory from the retrieved node and sets this as the current directory.
Parameters:
- data : Binary data representing a serialized DirectoryData object.
Returns:
- error : An error is returned if unmarshalling the data, putting blocks into blockstore, retrieving the root directory node, or creating a new directory from the node fails. Otherwise, it returns nil.
type DirectoryDetail ¶ added in v0.3.0
type DirectoryDetail struct { Dir *model.Directory Data *DirectoryData }
type DirectoryTree ¶ added in v0.3.0
type DirectoryTree struct {
// contains filtered or unexported fields
}
func NewDirectoryTree ¶ added in v0.3.0
func NewDirectoryTree() DirectoryTree
func (DirectoryTree) Add ¶ added in v0.3.0
Add inserts a new directory into the DirectoryTree.
Parameters:
- ctx: Context that allows for asynchronous task cancellation.
- dir: A pointer to a model.Directory object that needs to be added to the tree.
Returns:
- error: The error encountered during the operation, if any
func (DirectoryTree) Cache ¶ added in v0.3.0
func (t DirectoryTree) Cache() map[model.DirectoryID]*DirectoryDetail
func (DirectoryTree) Get ¶ added in v0.3.0
func (t DirectoryTree) Get(dirID model.DirectoryID) *DirectoryDetail
func (DirectoryTree) Has ¶ added in v0.3.0
func (t DirectoryTree) Has(dirID model.DirectoryID) bool
func (DirectoryTree) Resolve ¶ added in v0.3.0
func (t DirectoryTree) Resolve(ctx context.Context, dirID model.DirectoryID) (*format.Link, error)
Resolve recursively constructs the IPLD (InterPlanetary Linked Data) structure for a directory and its subdirectories, and returns a link pointing to the root of this structure.
Parameters:
- ctx: Context that allows for asynchronous task cancellation.
- dirID: The ID of the directory that needs to be resolved.
Returns:
- *format.Link: A link that points to the root of the IPLD structure for the directory.
- error: The error encountered during the operation, if any.
type DummyNode ¶
type DummyNode struct {
// contains filtered or unexported fields
}
func NewDummyNode ¶
func (DummyNode) ResolveLink ¶
type RecordedDagService ¶ added in v0.5.0
type RecordedDagService struct {
// contains filtered or unexported fields
}
RecordedDagService is a DAGService that records all blocks that are used. This struct is only meant to be used internally which achieves * Tracks the blocks that are used * Directly supports DummyNode
func NewRecordedDagService ¶ added in v0.5.0
func NewRecordedDagService() *RecordedDagService
func (*RecordedDagService) Add ¶ added in v0.5.0
Add adds a block to the RecordedDagService's blockstore.
If the node is of type *DummyNode, it is added to the blockstore with its size and marked as a dummy. Otherwise, the node's raw data is added to the blockstore.
Parameters:
- ctx: A context to allow for timeout or cancellation of operations.
- node: The format.Node representing the block to be added to the blockstore.
Returns:
- An error if any issues arise during the addition process; otherwise, it returns nil.
func (*RecordedDagService) Get ¶ added in v0.5.0
Get retrieves a format.Node based on a given CID from the RecordedDagService.
The RecordedDagService keeps track of blocks with their visitation status. If a block with the provided CID is found and hasn't been visited yet, it's marked as visited. If the block is a dummy block, a dummy node is returned; otherwise, the raw data of the block is decoded into a format.Node using the IPLD legacy decoder.
Parameters:
- ctx: A context to allow for timeout or cancellation of operations.
- c: A CID representing the content identifier of the desired block.
Returns:
- A format.Node representing the block associated with the given CID. This could be a dummy node or a decoded version of the actual block data.
- An error if the CID does not match any blocks in the service's blockstore or if other issues arise. If the CID is not found, format.ErrNotFound with the CID is returned.
func (*RecordedDagService) GetMany ¶ added in v0.5.0
func (r *RecordedDagService) GetMany(ctx context.Context, cids []cid.Cid) <-chan *format.NodeOption
GetMany fetches multiple nodes from the RecordedDagService's blockstore concurrently.
This method returns a channel where the caller can consume the results. Each result is wrapped in a *format.NodeOption which contains the format.Node and an error, if any occurred while fetching the node.
Parameters:
- ctx: A context to allow for timeout or cancellation of operations.
- cids: A slice of cid.Cid representing the identifiers of the nodes to be fetched.
Returns:
- A channel of *format.NodeOption. Each *format.NodeOption contains a fetched node and an error indicating any issues that occurred while fetching.
func (*RecordedDagService) Remove ¶ added in v0.5.0
func (r *RecordedDagService) Remove(ctx context.Context, c cid.Cid) error
func (*RecordedDagService) RemoveMany ¶ added in v0.5.0
func (r *RecordedDagService) RemoveMany(ctx context.Context, cids []cid.Cid) error
func (*RecordedDagService) ResetVisited ¶ added in v0.5.0
func (r *RecordedDagService) ResetVisited()
func (*RecordedDagService) Visit ¶ added in v0.5.0
func (r *RecordedDagService) Visit(ctx context.Context, c cid.Cid)
Visit marks a block with a given CID as visited in the RecordedDagService's blockstore.
The purpose of this function is to track the visitation status of blocks. If a block with the provided CID exists in the blockstore and hasn't been visited yet, this method will mark it as visited. If the block is already marked as visited or doesn't exist, the method does nothing.
Parameters:
- ctx: A context to allow for timeout or cancellation of operations.
- c: A CID representing the content identifier of the block to be marked as visited.