use std::sync::Arc;
use re_chunk::{Chunk, ChunkId};
use crate::{RawRrdManifest, RrdManifest};
#[cfg(feature = "decoder")]
mod rrd;
#[cfg(feature = "decoder")]
pub use self::rrd::RrdChunkProvider;
#[async_trait::async_trait]
pub trait ChunkProvider: Send + Sync {
fn manifest(&self) -> &Arc<RrdManifest>;
fn raw_manifest(&self) -> &Arc<RawRrdManifest>;
fn source(&self) -> String;
async fn load_chunks(&self, ids: &[ChunkId]) -> Result<Vec<Arc<Chunk>>, ChunkProviderError>;
}
#[derive(thiserror::Error, Debug)]
#[error(transparent)]
pub struct ChunkProviderError(pub Box<dyn std::error::Error + Send + Sync + 'static>);