From 72b20c1d798551bfa2bb46f5521553144b45c09f Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 2 Mar 2023 16:02:42 -0700 Subject: btrfstree: Rethink the API, but leave the old API in place --- lib/btrfs/io3_btree.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'lib/btrfs/io3_btree.go') diff --git a/lib/btrfs/io3_btree.go b/lib/btrfs/io3_btree.go index 030ea41..59e4c1d 100644 --- a/lib/btrfs/io3_btree.go +++ b/lib/btrfs/io3_btree.go @@ -12,6 +12,7 @@ import ( "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfstree" "git.lukeshu.com/btrfs-progs-ng/lib/btrfs/btrfsvol" "git.lukeshu.com/btrfs-progs-ng/lib/containers" + "git.lukeshu.com/btrfs-progs-ng/lib/diskio" "git.lukeshu.com/btrfs-progs-ng/lib/textui" ) @@ -73,6 +74,21 @@ func (fs *FS) readNode(_ context.Context, addr btrfsvol.LogicalAddr, nodeEntry * var _ btrfstree.NodeSource = (*FS)(nil) +// btrfstree.Forrest /////////////////////////////////////////////////////////// + +// RawTree is a variant of ForrestLookup that returns a concrete type +// instead of an interface. +func (fs *FS) RawTree(ctx context.Context, treeID btrfsprim.ObjID) (*btrfstree.RawTree, error) { + return btrfstree.RawForrest{NodeSource: fs}.RawTree(ctx, treeID) +} + +// ForrestLookup implements btree.Forrest. +func (fs *FS) ForrestLookup(ctx context.Context, treeID btrfsprim.ObjID) (btrfstree.Tree, error) { + return btrfstree.RawForrest{NodeSource: fs}.ForrestLookup(ctx, treeID) +} + +var _ btrfstree.Forrest = (*FS)(nil) + // btrfstree.TreeOperator ////////////////////////////////////////////////////// // TreeWalk implements btrfstree.TreeOperator. @@ -96,3 +112,18 @@ func (fs *FS) TreeSearchAll(treeID btrfsprim.ObjID, searcher btrfstree.TreeSearc } var _ btrfstree.TreeOperator = (*FS)(nil) + +// ReadableFS ////////////////////////////////////////////////////////////////// + +type ReadableFS interface { + btrfstree.Forrest + + Superblock() (*btrfstree.Superblock, error) + + Name() string + + // For reading file contents. + diskio.ReaderAt[btrfsvol.LogicalAddr] +} + +var _ ReadableFS = (*FS)(nil) -- cgit v1.2.3-2-g168b From c7b6460ee9b3c07c13c973cbc8c8f690560fefc6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 2 Mar 2023 16:02:42 -0700 Subject: tree-wide: Drop the old btrfstree.TreeOperator API --- lib/btrfs/io3_btree.go | 24 ------------------------ 1 file changed, 24 deletions(-) (limited to 'lib/btrfs/io3_btree.go') diff --git a/lib/btrfs/io3_btree.go b/lib/btrfs/io3_btree.go index 59e4c1d..01797df 100644 --- a/lib/btrfs/io3_btree.go +++ b/lib/btrfs/io3_btree.go @@ -89,30 +89,6 @@ func (fs *FS) ForrestLookup(ctx context.Context, treeID btrfsprim.ObjID) (btrfst var _ btrfstree.Forrest = (*FS)(nil) -// btrfstree.TreeOperator ////////////////////////////////////////////////////// - -// TreeWalk implements btrfstree.TreeOperator. -func (fs *FS) TreeWalk(ctx context.Context, treeID btrfsprim.ObjID, errHandle func(*btrfstree.TreeError), cbs btrfstree.TreeWalkHandler) { - btrfstree.TreeOperatorImpl{NodeSource: fs}.TreeWalk(ctx, treeID, errHandle, cbs) -} - -// TreeLookup implements btrfstree.TreeOperator. -func (fs *FS) TreeLookup(treeID btrfsprim.ObjID, key btrfsprim.Key) (btrfstree.Item, error) { - return btrfstree.TreeOperatorImpl{NodeSource: fs}.TreeLookup(treeID, key) -} - -// TreeSearch implements btrfstree.TreeOperator. -func (fs *FS) TreeSearch(treeID btrfsprim.ObjID, searcher btrfstree.TreeSearcher) (btrfstree.Item, error) { - return btrfstree.TreeOperatorImpl{NodeSource: fs}.TreeSearch(treeID, searcher) -} - -// TreeSearchAll implements btrfstree.TreeOperator. -func (fs *FS) TreeSearchAll(treeID btrfsprim.ObjID, searcher btrfstree.TreeSearcher) ([]btrfstree.Item, error) { - return btrfstree.TreeOperatorImpl{NodeSource: fs}.TreeSearchAll(treeID, searcher) -} - -var _ btrfstree.TreeOperator = (*FS)(nil) - // ReadableFS ////////////////////////////////////////////////////////////////// type ReadableFS interface { -- cgit v1.2.3-2-g168b