Basic IPC testing
This commit is contained in:
		
							parent
							
								
									2c269e78b6
								
							
						
					
					
						commit
						ba740808f1
					
				
					 4 changed files with 62 additions and 2 deletions
				
			
		|  | @ -1 +1,17 @@ | ||||||
| fn main() {} | use std::io::Write; | ||||||
|  | 
 | ||||||
|  | use deerwm::commands; | ||||||
|  | use nanoserde::SerBin; | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  |     let mut cmd_fifo = unix_named_pipe::open_write(commands::DEFAULT_PIPE) | ||||||
|  |         .expect("failed to open fifo for writing"); | ||||||
|  | 
 | ||||||
|  |     let quit_cmd = commands::Command::Quit; | ||||||
|  |     let mut cmd_buffer = Vec::new(); | ||||||
|  |     quit_cmd.ser_bin(&mut cmd_buffer); | ||||||
|  | 
 | ||||||
|  |     cmd_fifo | ||||||
|  |         .write_all(&cmd_buffer[..]) | ||||||
|  |         .expect("failed to write to fifo"); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -1 +1,36 @@ | ||||||
| fn main() {} | use commands::Command; | ||||||
|  | use nanoserde::DeBin; | ||||||
|  | use std::io::Read; | ||||||
|  | 
 | ||||||
|  | use deerwm::commands; | ||||||
|  | 
 | ||||||
|  | fn main() { | ||||||
|  |     if let Err(e) = unix_named_pipe::create(commands::DEFAULT_PIPE, None) { | ||||||
|  |         match e.kind() { | ||||||
|  |             std::io::ErrorKind::AlreadyExists => {} | ||||||
|  |             _ => panic!("{}", e), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     let mut cmd_fifo = | ||||||
|  |         unix_named_pipe::open_read(commands::DEFAULT_PIPE).expect("failed to open fifo"); | ||||||
|  |     let mut cmd_buffer = [0; 256]; | ||||||
|  | 
 | ||||||
|  |     'run: loop { | ||||||
|  |         if let Ok(n) = cmd_fifo.read(&mut cmd_buffer) { | ||||||
|  |             if n > 0 { | ||||||
|  |                 println!("{:?}", &cmd_buffer[..n]); | ||||||
|  | 
 | ||||||
|  |                 if let Ok(cmd) = Command::de_bin(&mut 0, &cmd_buffer[..n]) { | ||||||
|  |                     match cmd { | ||||||
|  |                         Command::Quit => { | ||||||
|  |                             println!("Recieved quit command!"); | ||||||
|  |                             break 'run; | ||||||
|  |                         }, | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     std::fs::remove_file(commands::DEFAULT_PIPE).expect("failed to create fifo"); | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								src/commands.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/commands.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | use nanoserde::{DeBin, SerBin}; | ||||||
|  | 
 | ||||||
|  | pub const DEFAULT_PIPE: &str = "/tmp/deerwm"; | ||||||
|  | 
 | ||||||
|  | #[derive(Clone, Debug, DeBin, SerBin)] | ||||||
|  | pub enum Command { | ||||||
|  |     Quit | ||||||
|  | } | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | pub mod commands; | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue