cyfs_lib/traversal/object/
file.rs1use super::def::*;
2use cyfs_base::*;
3
4pub struct FileObjectTraverser {
5 current: NormalObject,
6 cb: ObjectTraverserCallBackRef,
7}
8
9impl FileObjectTraverser {
10 pub fn new(current: NormalObject, cb: ObjectTraverserCallBackRef) -> Self {
11 Self { current, cb }
12 }
13
14 pub fn finish(self) -> NormalObject {
15 self.current
16 }
17
18 pub async fn tranverse(&self)-> BuckyResult<()> {
19 let object = self.current.object.object.as_ref().unwrap();
20 let file = object.as_file();
21
22 match file.body() {
23 Some(body) => match body.content().inner_chunk_list() {
24 Some(list) => {
25 for chunk_id in list.iter() {
26 self.append_chunk(chunk_id).await?;
27 }
28 }
29 None => {}
30 },
31 None => {}
32 }
33
34 Ok(())
35 }
36
37 async fn append_chunk(&self, chunk_id: &ChunkId)-> BuckyResult<()> {
38 let item = TraverseChunkItem {
39 chunk_id: chunk_id.to_owned(),
40 };
41
42 self.cb.on_chunk(item).await
43 }
44}