mirror of
https://github.com/Djeeberjr/fw-anwesenheit.git
synced 2025-07-05 02:14:17 +00:00
use channels in pm3 function
This commit is contained in:
parent
a9bbc61300
commit
9a26dad304
15
src/main.rs
15
src/main.rs
@ -1,9 +1,18 @@
|
|||||||
use pm3::run_pm3;
|
use pm3::{pm3_mock, run_pm3};
|
||||||
|
use std::{sync::mpsc::channel, thread};
|
||||||
|
|
||||||
|
mod id_store;
|
||||||
mod parser;
|
mod parser;
|
||||||
mod pm3;
|
mod pm3;
|
||||||
mod id_store;
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
run_pm3().unwrap();
|
let (sender, receiver) = channel();
|
||||||
|
thread::spawn(move || {
|
||||||
|
// run_pm3(sender);
|
||||||
|
pm3_mock(sender);
|
||||||
|
});
|
||||||
|
|
||||||
|
while true {
|
||||||
|
println!("{}", receiver.recv().unwrap());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
29
src/pm3.rs
29
src/pm3.rs
@ -1,8 +1,10 @@
|
|||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::process::{Command, Stdio};
|
|
||||||
use std::io::{self, BufRead};
|
use std::io::{self, BufRead};
|
||||||
|
use std::process::{Command, Stdio};
|
||||||
|
use std::sync::mpsc::Sender;
|
||||||
|
use std::{thread, time};
|
||||||
|
|
||||||
pub fn run_pm3() -> Result<(), Box<dyn Error>> {
|
pub fn run_pm3(sender: Sender<String>) -> Result<(), Box<dyn Error>> {
|
||||||
let mut cmd = Command::new("stdbuf")
|
let mut cmd = Command::new("stdbuf")
|
||||||
.arg("-oL")
|
.arg("-oL")
|
||||||
.arg("pm3")
|
.arg("pm3")
|
||||||
@ -19,7 +21,12 @@ pub fn run_pm3() -> Result<(), Box<dyn Error>> {
|
|||||||
Ok(line) => {
|
Ok(line) => {
|
||||||
let parse_result = super::parser::parse_line(&line);
|
let parse_result = super::parser::parse_line(&line);
|
||||||
if let Some(uid) = parse_result {
|
if let Some(uid) = parse_result {
|
||||||
println!("UID: {}",uid);
|
match sender.send(uid) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Failed to send to channel: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
@ -36,3 +43,19 @@ pub fn run_pm3() -> Result<(), Box<dyn Error>> {
|
|||||||
Err("pm3 had non zero exit code".into())
|
Err("pm3 had non zero exit code".into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn pm3_mock(sender: Sender<String>) -> Result<(), Box<dyn Error>> {
|
||||||
|
#![allow(while_true)]
|
||||||
|
while true {
|
||||||
|
match sender.send("F1409618".to_owned()) {
|
||||||
|
Ok(()) => {}
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Failed to send to channel: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
thread::sleep(time::Duration::from_secs(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user