mirror of
				https://github.com/Djeeberjr/fw-anwesenheit.git
				synced 2025-11-03 23:24:10 +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 pm3;
 | 
			
		||||
mod id_store;
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
    run_pm3().unwrap();
 | 
			
		||||
    let (sender, receiver) = channel();
 | 
			
		||||
    thread::spawn(move || {
 | 
			
		||||
        // run_pm3(sender);
 | 
			
		||||
        pm3_mock(sender);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    while true {
 | 
			
		||||
        println!("{}", receiver.recv().unwrap());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										33
									
								
								src/pm3.rs
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								src/pm3.rs
									
									
									
									
									
								
							@ -1,8 +1,10 @@
 | 
			
		||||
use std::error::Error;
 | 
			
		||||
use std::process::{Command, Stdio};
 | 
			
		||||
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")
 | 
			
		||||
        .arg("-oL")
 | 
			
		||||
        .arg("pm3")
 | 
			
		||||
@ -19,11 +21,16 @@ pub fn run_pm3() -> Result<(), Box<dyn Error>> {
 | 
			
		||||
            Ok(line) => {
 | 
			
		||||
                let parse_result = super::parser::parse_line(&line);
 | 
			
		||||
                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) => {
 | 
			
		||||
                eprintln!("{}",e);
 | 
			
		||||
                eprintln!("{}", e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
@ -32,7 +39,23 @@ pub fn run_pm3() -> Result<(), Box<dyn Error>> {
 | 
			
		||||
 | 
			
		||||
    if status.success() {
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }else {
 | 
			
		||||
    } else {
 | 
			
		||||
        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