Switch to persistent printer with queue
This commit is contained in:
parent
0ea4cf1d22
commit
6555e9c0bd
14 changed files with 221 additions and 76 deletions
|
|
@ -1,19 +1,24 @@
|
|||
mod drawer;
|
||||
mod persistent_printer;
|
||||
mod printer;
|
||||
mod server;
|
||||
|
||||
use std::path::PathBuf;
|
||||
use std::{path::PathBuf, time::Duration};
|
||||
|
||||
use clap::Parser;
|
||||
use drawer::Drawer;
|
||||
use printer::Printer;
|
||||
use drawer::{BacklogDrawing, Command};
|
||||
use tokio::{runtime::Runtime, sync::mpsc};
|
||||
|
||||
use self::{drawer::Drawer, persistent_printer::PersistentPrinter};
|
||||
|
||||
#[derive(Parser)]
|
||||
struct Args {
|
||||
/// Address the web server will listen at.
|
||||
addr: String,
|
||||
|
||||
/// Path to the queue directory.
|
||||
queue: PathBuf,
|
||||
|
||||
/// Path to the printer's USB device file.
|
||||
///
|
||||
/// Usually, this is located at `/dev/usb/lp0` or a similar location.
|
||||
|
|
@ -30,11 +35,17 @@ fn main() -> anyhow::Result<()> {
|
|||
|
||||
let (tx, rx) = mpsc::channel(3);
|
||||
|
||||
let printer = Printer::new(args.printer, args.export)?;
|
||||
let printer = PersistentPrinter::new(args.printer, args.export, args.queue);
|
||||
let mut drawer = Drawer::new(rx, printer);
|
||||
|
||||
let runtime = Runtime::new()?;
|
||||
runtime.spawn(server::run(tx, args.addr));
|
||||
runtime.spawn(server::run(tx.clone(), args.addr));
|
||||
runtime.spawn(async move {
|
||||
loop {
|
||||
let _ = tx.send(Command::draw(BacklogDrawing)).await;
|
||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||
}
|
||||
});
|
||||
|
||||
println!("Running");
|
||||
drawer.run()?;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue