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​