aboutsummaryrefslogtreecommitdiff
path: root/pulse/src/runnable.rs
blob: d77a1323adef29e043868bf02a6a73999fe25a89 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use std::sync::mpsc::*;
use crate::config::*;
use swaystatus_plugin::*;
use crate::communication::*;

pub struct PulseVolumeRunnable<'p> {
    config : &'p PulseVolumeConfig,
    to_main : Box<dyn MsgModuleToMain + 'p>,
    from_main : Receiver<MessagesFromMain>,
    pulse : std::sync::Arc<PulseMainLoop>
}

impl<'p : 's, 's> PulseVolumeRunnable<'p> {
    pub fn new(config : &'p PulseVolumeConfig, to_main : Box<dyn MsgModuleToMain + 'p>) -> (Self, SenderForMain) {
        let (s, r) = channel();
        let pulse = std::sync::Arc::new(PulseMainLoop {});//TODO: initialize this properly
        let result = PulseVolumeRunnable {
            config,
            to_main,
            from_main : r,
            pulse: pulse.clone()
        };
        let sender = SenderForMain::new(s, pulse);
        (result, sender)
    }
}

impl<'p> SwayStatusModuleRunnable for PulseVolumeRunnable<'p> {
    fn run(&self) {
        //TODO
    }
}

pub struct PulseMainLoop {
    //TODO!
}