Kaynağa Gözat

Merge pull request #139 from michaelherger/rustify

Rustify some recent changes according to plietar
Sasha Hilton 7 yıl önce
ebeveyn
işleme
2617a9cfe2
3 değiştirilmiş dosya ile 18 ekleme ve 25 silme
  1. 2 0
      .gitignore
  2. 1 1
      discovery/src/discovery.rs
  3. 15 24
      src/main.rs

+ 2 - 0
.gitignore

@@ -2,3 +2,5 @@ target
 .cargo
 .cargo
 spotify_appkey.key
 spotify_appkey.key
 .vagrant/
 .vagrant/
+.project
+.history

+ 1 - 1
discovery/src/discovery.rs

@@ -215,7 +215,7 @@ pub fn discovery(handle: &Handle, config: ConnectConfig, device_id: String, port
     let serve = {
     let serve = {
         let http = Http::new();
         let http = Http::new();
         debug!("Zeroconf server listening on 0.0.0.0:{}", port);
         debug!("Zeroconf server listening on 0.0.0.0:{}", port);
-        http.serve_addr_handle(&format!("0.0.0.0:{}", port).parse().unwrap(), &handle, move || Ok(discovery.clone())).unwrap()
+        http.serve_addr_handle(&format!("0.0.0.0:{}", port).parse().unwrap(), &handle, move || Ok(discovery.clone())).expect("Unable to bind Zeroconf to port")
     };
     };
 
 
     let s_port = serve.incoming_ref().local_addr().port();
     let s_port = serve.incoming_ref().local_addr().port();

+ 15 - 24
src/main.rs

@@ -101,7 +101,7 @@ fn setup(args: &[String]) -> Setup {
         .optopt("", "device", "Audio device to use. Use '?' to list options", "DEVICE")
         .optopt("", "device", "Audio device to use. Use '?' to list options", "DEVICE")
         .optopt("", "mixer", "Mixer to use", "MIXER")
         .optopt("", "mixer", "Mixer to use", "MIXER")
         .optopt("", "initial-volume", "Initial volume in %, once connected (must be from 0 to 100)", "VOLUME")
         .optopt("", "initial-volume", "Initial volume in %, once connected (must be from 0 to 100)", "VOLUME")
-        .optopt("z", "zeroconf-port", "The port the internal server advertised over zeroconf uses.", "ZEROCONF_PORT");
+        .optopt("", "zeroconf-port", "The port the internal server advertised over zeroconf uses.", "ZEROCONF_PORT");
 
 
     let matches = match opts.parse(&args[1..]) {
     let matches = match opts.parse(&args[1..]) {
         Ok(m) => m,
         Ok(m) => m,
@@ -135,30 +135,21 @@ fn setup(args: &[String]) -> Setup {
     let mixer = mixer::find(mixer_name.as_ref())
     let mixer = mixer::find(mixer_name.as_ref())
         .expect("Invalid mixer");
         .expect("Invalid mixer");
 
 
-    let initial_volume: i32;
-    if matches.opt_present("initial-volume") && matches.opt_str("initial-volume").unwrap().parse::<i32>().is_ok() {
-        let iv = matches.opt_str("initial-volume").unwrap().parse::<i32>().unwrap();
-        match iv {
-            iv if iv >= 0 && iv <= 100 => { initial_volume = iv * 0xFFFF / 100 }
-            _ => {
-                debug!("Volume needs to be a value from 0-100; set volume level to 50%");
-                initial_volume = 0x8000;
+    let initial_volume = matches
+        .opt_str("initial-volume")
+        .map(|volume| {
+            let volume = volume.parse::<i32>().unwrap();
+            if volume < 0 || volume > 100 {
+                panic!("Initial volume must be in the range 0-100");
             }
             }
-        }
-    } else {
-        initial_volume = 0x8000;
-    }
-
-    let zeroconf_port: u16;
-    if matches.opt_present("zeroconf-port") && matches.opt_str("zeroconf-port").unwrap().parse::<u16>().is_ok() {
-        let z = matches.opt_str("zeroconf-port").unwrap().parse::<u16>().unwrap();
-        match z {
-            z if z >= 1024 => { zeroconf_port = z }
-            _ => { zeroconf_port = 0 }
-        }
-    } else {
-        zeroconf_port = 0
-    }
+            volume * 0xFFFF / 100
+        })
+        .unwrap_or(0x8000);
+
+    let zeroconf_port =
+    matches.opt_str("zeroconf-port")
+           .map(|port| port.parse::<u16>().unwrap())
+           .unwrap_or(0);
 
 
     let name = matches.opt_str("name").unwrap();
     let name = matches.opt_str("name").unwrap();
     let use_audio_cache = !matches.opt_present("disable-audio-cache");
     let use_audio_cache = !matches.opt_present("disable-audio-cache");