Saltar al contenido principal

ChunkSource

ChunkSource define una interfaz para traer chunks de archivos desde cualquier fuente. Esto se usa en ReconstructionService para leer chunks antes de la reconstrucción.


Métodos

MétodoDevuelveDescripción
as_any()&dyn AnyFunción auxiliar para any.
get_chunk(hash)Result<Vec<u8>, ChunkError>Devuelve un solo chunk por su hash.
get_chunks(hashes, options)Result<HashMap<String, Vec<u8>>, ChunkError>Método opcional para traer múltiples chunks concurrentemente.
stream_chunks(hashes, options)Option<BoxStream<'static, Result<ChunkData, ChunkError>>>Método opcional para hacer streaming de chunks, con posibilidad de preservar el orden.

ChunkError

Enum de errores personalizado para los resultados de ChunkSource. (Usa thiserror)

pub enum ChunkError {
#[error("Chunk '{0}' not found")]
NotFound(String),

#[error("Chunk '{0}' could not be read")]
ReadError(String),

#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
}

Detalles de métodos

get_chunk(hash)

Devuelve un solo chunk por su hash desde la fuente.

Parámetros:

NombreTipoDescripción
hash&strHash del chunk.

Devuelve: Result<Vec<u8>, ChunkError>


get_chunks(hashes, options)

Trae múltiple chunks de forma concurrente.

Parámetros:

NombreTipoDescripción
hashes&[String]Lista de todos los hashes de chunk a traer.
options.concurrencyOption<usize>Límite de concurrencia opcional para descargar chunks.

Devuelve: Result<HashMap<String, Vec<u8>>, ChunkError>


stream_chunks(hashes, options)

Stream de los chunks dados desde la fuente.

Parámetros:

NombreTipoDescripción
hashes&[String]Lista de todos los hashes de chunk a traer.
options.concurrency?Option<usize>Límite de concurrencia opcional para descargar chunks.
options.preserveOrder?Option<bool>Booleano opcional para mantener el orden de los chunks.

Devuelve: Option<BoxStream<'static, Result<ChunkData, ChunkError>>>


Implementaciones

Abajo están las implementaciones principales de ChunkSource. Cada una es completamente usable por los usuarios finales.

Relacionado