Jelajahi Sumber

Move structs which are send across threads to own module

Daniel Romero 8 tahun lalu
induk
melakukan
48a43f4948
7 mengubah file dengan 30 tambahan dan 30 penghapusan
  1. 1 0
      src/lib.rs
  2. 1 7
      src/mercury.rs
  3. 22 0
      src/messaging/mod.rs
  4. 1 1
      src/mixer/mod.rs
  5. 1 2
      src/mixer/softmixer.rs
  6. 2 2
      src/session.rs
  7. 2 18
      src/spirc.rs

+ 1 - 0
src/lib.rs

@@ -63,6 +63,7 @@ pub mod player;
 pub mod stream;
 pub mod version;
 pub mod mixer;
+pub mod messaging;
 
 #[cfg(feature = "with-syntex")] include!(concat!(env!("OUT_DIR"), "/lib.rs"));
 #[cfg(not(feature = "with-syntex"))] include!("lib.in.rs");

+ 1 - 7
src/mercury.rs

@@ -7,7 +7,7 @@ use std::mem::replace;
 
 use protocol;
 use session::{Session, PacketHandler};
-use spirc::MercuryResponseSender;
+use messaging::{MercuryResponse, MercuryResponseSender};
 
 #[derive(Debug, PartialEq, Eq)]
 pub enum MercuryMethod {
@@ -24,12 +24,6 @@ pub struct MercuryRequest {
     pub payload: Vec<Vec<u8>>,
 }
 
-#[derive(Debug)]
-pub struct MercuryResponse {
-    pub uri: String,
-    pub payload: Vec<Vec<u8>>,
-}
-
 enum MercuryCallback {
     Future(eventual::Complete<MercuryResponse, ()>),
     Subscription(MercuryResponseSender),

+ 22 - 0
src/messaging/mod.rs

@@ -0,0 +1,22 @@
+pub struct UpdateMessage;
+
+#[derive(Debug)]
+pub struct MercuryResponse {
+    pub uri: String,
+    pub payload: Vec<Vec<u8>>,
+}
+
+pub enum SpircMessage {
+    MercuryMsg(MercuryResponse),
+    UpdateMsg(UpdateMessage)
+}
+
+implement_sender!(name => MercuryResponseSender, 
+                  wrap => MercuryResponse, 
+                  with => SpircMessage, 
+                  variant => MercuryMsg);
+
+implement_sender!(name => UpdateMessageSender, 
+                  wrap => UpdateMessage, 
+                  with => SpircMessage, 
+                  variant => UpdateMsg);

+ 1 - 1
src/mixer/mod.rs

@@ -1,4 +1,4 @@
-use spirc::UpdateMessageSender;
+use messaging::UpdateMessageSender;
 
 use self::softmixer::SoftMixer;
 

+ 1 - 2
src/mixer/softmixer.rs

@@ -1,8 +1,7 @@
 use std::sync::Arc;
 use std::sync::atomic::{AtomicUsize, Ordering};
 
-use spirc::UpdateMessageSender;
-use spirc::UpdateMessage;
+use messaging::{UpdateMessage, UpdateMessageSender};
 
 use super::Mixer;
 use super::AudioFilter;

+ 2 - 2
src/session.rs

@@ -20,11 +20,11 @@ use authentication::Credentials;
 use cache::Cache;
 use connection::{self, PlainConnection, CipherConnection};
 use diffie_hellman::DHLocalKeys;
-use mercury::{MercuryManager, MercuryRequest, MercuryResponse};
+use mercury::{MercuryManager, MercuryRequest};
 use metadata::{MetadataManager, MetadataRef, MetadataTrait};
 use protocol;
 use stream::StreamManager;
-use spirc::MercuryResponseSender;
+use messaging::{MercuryResponse, MercuryResponseSender};
 use util::{self, SpotifyId, FileId, ReadSeek};
 use version;
 

+ 2 - 18
src/spirc.rs

@@ -4,7 +4,8 @@ use std::borrow::Cow;
 use std::sync::{mpsc, Mutex, Arc};
 use std::collections::HashMap;
 
-use mercury::{MercuryRequest, MercuryMethod, MercuryResponse};
+use mercury::{MercuryRequest, MercuryMethod};
+use messaging::{SpircMessage, MercuryResponseSender, UpdateMessageSender};
 use player::{Player, PlayerState};
 use mixer::Mixer;
 use session::Session;
@@ -56,23 +57,6 @@ pub struct State {
     pub end_of_track: bool,
 }
 
-pub struct UpdateMessage;
-
-pub enum SpircMessage {
-    MercuryMsg(MercuryResponse),
-    UpdateMsg(UpdateMessage)
-}
-
-implement_sender!(name => MercuryResponseSender, 
-                  wrap => MercuryResponse, 
-                  with => SpircMessage, 
-                  variant => MercuryMsg);
-
-implement_sender!(name => UpdateMessageSender, 
-                  wrap => UpdateMessage, 
-                  with => SpircMessage, 
-                  variant => UpdateMsg);
-
 impl SpircManager {
     pub fn new(session: Session, player: Player, mixer: Box<Mixer + Send>) -> SpircManager {
         let ident = session.device_id().to_owned();