Skip to main content

ipp_printer_app/
lib.rs

1#![deny(missing_docs)]
2
3//! Pure-Rust IPP Everywhere framework for building CUPS-driverless
4//! "printer applications" — the modern replacement for the PPD-driven
5//! filter+backend model.
6//!
7//! The framework runs an axum HTTP listener that speaks IPP over POST on
8//! `/ipp/print/<printer-name>`. It's device-agnostic: a consumer crate
9//! supplies a [`DeviceBackend`] (enumerate physical devices, poll their
10//! status) plus a [`RasterDriver`] (turn a PWG raster page into device
11//! bytes), and the framework handles the rest — job registry with
12//! monotonic ids, `Get-Jobs`/`Get-Job-Attributes`/`Cancel-Job`, background
13//! status polling, optional mDNS / DNS-SD advertising (enabled by the
14//! default `mdns` feature), JSON state persistence.
15//!
16//! See `examples/minimal_server.rs` for the smallest end-to-end usage.
17
18pub mod attributes;
19pub mod device;
20pub mod flags;
21pub mod job;
22pub mod printer;
23#[cfg(feature = "mdns")]
24pub mod mdns;
25pub mod raster;
26pub mod server;
27pub mod state;
28pub mod status;
29
30pub use device::DeviceBackend;
31pub use flags::PrinterReason;
32pub use job::{JobId, JobRecord, JobRegistry, JobState};
33pub use printer::{PrinterConfig, PrinterHandle, PrinterRecord, PrinterRegistry};
34pub use raster::{JobFailure, JobOptions, RasterDriver};
35pub use server::{JobContext, Server, ServerOptions};
36pub use state::{default_state_path, PersistedState};