Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::io::Write;
- pub mod primary {
- fn app() {
- println!("Enter input, I'll reverse it. Enter 'q' to stop");
- let mut input = String::new();
- std::io::stdin()
- .read_line(&mut input)
- .expect("Couldn't read input");
- input = input.trim_end().to_string();
- println!("{}", input.chars().rev().collect::<String>());
- }
- pub fn run() {
- println!("Unique instance detected. Attempting to start a UDS server.");
- let uds_name = crate::backend::generate_uds_name();
- let socket = std::path::Path::new(&uds_name);
- // if socket already exists, remove it.
- // Should not be possible since application uniquness has already been checked.
- // TODO: HANDLE THIS
- if socket.exists() {
- std::fs::remove_file(&socket).expect("Could not remove socket");
- }
- match std::os::unix::net::UnixListener::bind(&socket) {
- Err(e) => {
- // TODO: HANDLE THIS
- println!("Socket binding failed: {}.", e);
- panic!();
- }
- Ok(stream) => {
- println!("Server connected, listening...");
- for _ in stream.incoming() {
- println!("Server has listened!");
- app();
- }
- }
- }
- }
- }
- pub mod fallback {
- pub fn run() {
- println!("Another instance is already running.");
- println!("Trying to communicate with the previous instance.");
- println!("Trying to connect with the previous socket server.");
- let uds_name = crate::backend::generate_uds_name();
- let socket = std::path::Path::new(&uds_name);
- match std::os::unix::net::UnixStream::connect(&socket) {
- Err(e) => {
- // TODO: HANDLE THIS
- println!("Socket not running: {}.", e);
- panic!();
- }
- Ok(stream) => {
- println!("Server connected successfully.");
- match stream.write_all(b"prompt") {
- Ok(_) => println!("Sent message to the UDS server"),
- // TODO: HANDLE THIS
- Err(_) => println!("Message sending failed"),
- }
- }
- }
- }
- }
- fn main() {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement