cyfs-lib 0.8.3

Rust cyfs-lib package
Documentation
use super::def::*;
use cyfs_base::*;

pub struct FileObjectTraverser {
    current: NormalObject,
    cb: ObjectTraverserCallBackRef,
}

impl FileObjectTraverser {
    pub fn new(current: NormalObject, cb: ObjectTraverserCallBackRef) -> Self {
        Self { current, cb }
    }

    pub fn finish(self) -> NormalObject {
        self.current
    }

    pub async fn tranverse(&self)-> BuckyResult<()> {
        let object = self.current.object.object.as_ref().unwrap();
        let file = object.as_file();

        match file.body() {
            Some(body) => match body.content().inner_chunk_list() {
                Some(list) => {
                    for chunk_id in list.iter() {
                        self.append_chunk(chunk_id).await?;
                    }
                }
                None => {}
            },
            None => {}
        }

        Ok(())
    }

    async fn append_chunk(&self, chunk_id: &ChunkId)-> BuckyResult<()> {
        let item = TraverseChunkItem {
            chunk_id: chunk_id.to_owned(),
        };

        self.cb.on_chunk(item).await
    }
}