WIP: Collection

This commit is contained in:
Jeremy Soller
2016-03-02 11:41:59 -07:00
parent 6d5be41c13
commit 856db3e21d
2 changed files with 32 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
use collections::Vec;
use system::error::Result;
use super::{ExNode, FileSystem, Node};
/// A collection of a Node and its associated ExNodes
pub struct Collection {
pub node: (u64, Node),
pub ex_nodes: Vec<(u64, ExNode)>
}
impl Collection {
pub fn load(fs: &mut FileSystem, block: u64) -> Result<Collection> {
let node = try!(fs.node(block));
let mut next = node.1.next;
let mut ex_nodes = Vec::new();
while next > 0 {
let ex_node = try!(fs.ex_node(next));
next = ex_node.1.next;
ex_nodes.push(ex_node);
}
Ok(Collection {
node: node,
ex_nodes: ex_nodes,
})
}
}
+2
View File
@@ -15,6 +15,7 @@ extern crate collections;
extern crate system;
pub use self::collection::Collection;
pub use self::disk::Disk;
pub use self::ex_node::ExNode;
pub use self::extent::Extent;
@@ -22,6 +23,7 @@ pub use self::filesystem::FileSystem;
pub use self::header::Header;
pub use self::node::Node;
pub mod collection;
pub mod disk;
pub mod ex_node;
pub mod extent;