51typedef enum : uint8_t {
75typedef enum : uint16_t {
219 const char* target_abs,
272 const char* combined_dir_rel,
Bounded per-host HTTP document cache for the media downloader.
Per-site descriptor loaded from a flat key=value config file.
mdl_fetch_faillog_size_t
Bounded run-failure log capacity (zero dynamic allocation).
@ k_mdl_fetch_fail_max
Failures stored before the log saturates.
ra8_err_t(* mdl_progress_fn)(void *ctx, const mdl_fetch_progress_t *ev)
Injected per-page progress sink; NULL disables all progress output.
ra8_err_t mdl_fetch_run(mdl_fetch_ctx_t *ctx, const mdl_url_list_t *chapters, mdl_fetch_layout_t layout, const char *combined_dir_rel, mdl_fetch_stats_t *stats)
Download a series' chapters incrementally, resuming and deduping.
ra8_err_t mdl_fetch_asset(mdl_fetch_ctx_t *ctx, const char *url, const char *target_abs, const char *referer, mdl_net_resp_t *out_resp, size_t *out_bytes)
Fetch one policy-governed asset to an absolute file path.
mdl_fetch_layout_t
Output directory layout the orchestrator writes.
@ k_mdl_layout_combined
All chapters -> one dir, continuous numbering.
@ k_mdl_layout_separate
Each chapter -> own dir, per-chapter numbering.
Jittered inter-request delay plus the per-host politeness governor.
Session identity (honest User-Agent) and robots.txt gating.
Persistent per-series library state for the media downloader.
Injected portable storage resources for downloader domain code.
Error Code Definitions for ra8-firmware.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
ra8_io targetable byte-stream facade – one writer, many destinations.
One non-reentrant cache binding over caller storage.
Everything mdl_fetch_run needs, injected for testability.
mdl_state_t * state
Persistent state, read and updated.
mdl_url_list_t * images
Extracted-image scratch (caller-owned).
const mdl_site_t * site
Selectors + politeness bounds.
mdl_governor_t * gov
Per-host rate/backoff governor, or NULL.
const char * state_path
Atomic checkpoint target, or NULL.
bool update_only
Skip chapters already recorded complete.
void * progress_ctx
Context passed to progress_fn.
mdl_storage_t * storage
Portable storage binding + workspaces.
char * page_buf
Chapter-HTML scratch (caller-owned).
mdl_cache_t * cache
Per-host HTML cache binding.
const char * series_abs_dir
Absolute series dir (paths resolve here).
bool refetch
Ignore local page reuse and hit network.
mdl_fetch_faillog_t * faillog
Caller-cleared failure log, or NULL.
ra8_io_stream_t * diagnostic
Borrowed diagnostic sink.
mdl_session_t * session
Identity + robots + net backend.
const char * series_url
Series URL, sent as the chapter Referer.
size_t page_cap
Capacity of page_buf.
mdl_progress_fn progress_fn
Per-page progress sink, or NULL (silent).
uint32_t timeout_ms
Per-request time budget.
ra8_err_t progress_error
First callback failure from this run.
One recorded page/chapter failure: what failed, and with what status.
ra8_err_t err
Classified failure code (rendered on demand).
char url[k_mdl_url_max]
Failing page or chapter URL (truncation-safe).
long status
HTTP status observed, 0 when none.
Bounded record of every failure in a run (declare at file scope).
size_t count
Stored (<= capacity).
size_t total
Observed (may exceed count).
mdl_fetch_fail_t items[k_mdl_fetch_fail_max]
Stored failures.
One per-page progress event the run emits through mdl_progress_fn.
bool reused
Page served from an already-held file.
size_t chapter_index
1-based chapter position in the run.
uint64_t page_bytes
Bytes transferred (0 when reused).
const char * chapter_id
Chapter identifier (URL leaf).
uint32_t elapsed_ms
Wall time for the transfer (0 when reused).
size_t chapter_total
Total chapters in the run.
size_t page_index
1-based page position within the chapter.
size_t page_total
Pages in the chapter.
Tallies a fetch run reports back (all zero-initialised by the run).
size_t chapters_completed
Chapters finished (all pages present) this run.
size_t chapters_skipped
Chapters skipped as already complete (–update).
size_t pages_fetched
Pages transferred over the network.
size_t pages_reused
Pages served from an already-held verified file.
size_t chapters_failed
Chapters left partial by a page failure.
size_t pages_failed
Page fetches that failed or robots refused.
Closed-loop per-host politeness governor (rate + backoff + concurrency).
Per-transfer response metadata surfaced to the politeness governor.
One download session's identity and robots.txt state.
One site's scraping rules (all data, no logic).
One series' complete persistent state (declare at file scope).
One non-reentrant downloader filesystem dependency bundle.
Bounded list of absolute URLs found on a page.
Caller-allocated byte-stream handle binding a sink to its context.