use std::sync::Arc;
use re_chunk::{Chunk, ChunkId};
use crate::{RawRrdManifest, RrdManifest};
#[cfg(feature = "decoder")]
#[cfg(not(target_arch = "wasm32"))]
mod rrd;
#[cfg(feature = "decoder")]
#[cfg(not(target_arch = "wasm32"))]
pub use self::rrd::RrdChunkProvider;
pub trait ChunkProvider: Send + Sync {
fn manifest(&self) -> &Arc<RrdManifest>;
fn raw_manifest(&self) -> &Arc<RawRrdManifest>;
fn source(&self) -> String;
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>);