Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. use std::io::Write;
  2.  
  3. pub mod primary {
  4. fn app() {
  5. println!("Enter input, I'll reverse it. Enter 'q' to stop");
  6. let mut input = String::new();
  7. std::io::stdin()
  8. .read_line(&mut input)
  9. .expect("Couldn't read input");
  10. input = input.trim_end().to_string();
  11. println!("{}", input.chars().rev().collect::<String>());
  12. }
  13.  
  14. pub fn run() {
  15. println!("Unique instance detected. Attempting to start a UDS server.");
  16.  
  17. let uds_name = crate::backend::generate_uds_name();
  18. let socket = std::path::Path::new(&uds_name);
  19.  
  20. // if socket already exists, remove it.
  21. // Should not be possible since application uniquness has already been checked.
  22. // TODO: HANDLE THIS
  23. if socket.exists() {
  24. std::fs::remove_file(&socket).expect("Could not remove socket");
  25. }
  26.  
  27. match std::os::unix::net::UnixListener::bind(&socket) {
  28. Err(e) => {
  29. // TODO: HANDLE THIS
  30. println!("Socket binding failed: {}.", e);
  31. panic!();
  32. }
  33. Ok(stream) => {
  34. println!("Server connected, listening...");
  35. for _ in stream.incoming() {
  36. println!("Server has listened!");
  37. app();
  38. }
  39. }
  40. }
  41. }
  42. }
  43. pub mod fallback {
  44. pub fn run() {
  45. println!("Another instance is already running.");
  46. println!("Trying to communicate with the previous instance.");
  47. println!("Trying to connect with the previous socket server.");
  48.  
  49. let uds_name = crate::backend::generate_uds_name();
  50. let socket = std::path::Path::new(&uds_name);
  51.  
  52. match std::os::unix::net::UnixStream::connect(&socket) {
  53. Err(e) => {
  54. // TODO: HANDLE THIS
  55. println!("Socket not running: {}.", e);
  56. panic!();
  57. }
  58. Ok(stream) => {
  59. println!("Server connected successfully.");
  60. match stream.write_all(b"prompt") {
  61. Ok(_) => println!("Sent message to the UDS server"),
  62. // TODO: HANDLE THIS
  63. Err(_) => println!("Message sending failed"),
  64. }
  65. }
  66. }
  67. }
  68. }
  69.  
  70. fn main() {
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement