Move structs which are send across threads to own module

This commit is contained in:
Daniel Romero 2017-02-03 10:06:09 +01:00
parent da537b57f4
commit 48a43f4948
7 changed files with 30 additions and 30 deletions

View file

@ -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");

View file

@ -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
src/messaging/mod.rs Normal file
View file

@ -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);

View file

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

View file

@ -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;

View file

@ -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;

View file

@ -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();