diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-11-15 17:20:31 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-11-16 10:10:03 +0100 |
| commit | 2c4f999ae036e2c88c4430582633d3bcf8a79800 (patch) | |
| tree | 5b51c7fcad9e7bfbe9fc76e385518f9aa2597b66 | |
| parent | 74188a87413f4d99c48e05b808a1483d11c28bbd (diff) | |
| download | mullvadvpn-2c4f999ae036e2c88c4430582633d3bcf8a79800.tar.xz mullvadvpn-2c4f999ae036e2c88c4430582633d3bcf8a79800.zip | |
Wrap offline monitor handle in a fixed type
| -rw-r--r-- | talpid-core/src/offline/dummy.rs | 6 | ||||
| -rw-r--r-- | talpid-core/src/offline/macos.rs | 6 | ||||
| -rw-r--r-- | talpid-core/src/offline/mod.rs | 11 | ||||
| -rw-r--r-- | talpid-core/src/offline/windows.rs | 4 |
4 files changed, 21 insertions, 6 deletions
diff --git a/talpid-core/src/offline/dummy.rs b/talpid-core/src/offline/dummy.rs index c654b846b8..7312f4780c 100644 --- a/talpid-core/src/offline/dummy.rs +++ b/talpid-core/src/offline/dummy.rs @@ -3,8 +3,10 @@ use tunnel_state_machine::TunnelCommand; error_chain!{} -pub fn spawn_monitor(_sender: UnboundedSender<TunnelCommand>) -> Result<()> { - Ok(()) +pub struct MonitorHandle; + +pub fn spawn_monitor(_sender: UnboundedSender<TunnelCommand>) -> Result<MonitorHandle> { + Ok(MonitorHandle) } pub fn is_offline() -> bool { diff --git a/talpid-core/src/offline/macos.rs b/talpid-core/src/offline/macos.rs index 12362eb16d..e55fa376d3 100644 --- a/talpid-core/src/offline/macos.rs +++ b/talpid-core/src/offline/macos.rs @@ -21,7 +21,9 @@ error_chain! { } } -pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<()> { +pub struct MonitorHandle; + +pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<MonitorHandle> { let (result_tx, result_rx) = mpsc::channel(); thread::spawn(move || match create_dynamic_store(sender) { Ok(store) => { @@ -31,7 +33,7 @@ pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<()> { } Err(e) => result_tx.send(Err(e)).unwrap(), }); - result_rx.recv().unwrap() + result_rx.recv().unwrap().map(|_| MonitorHandle) } pub fn is_offline() -> bool { diff --git a/talpid-core/src/offline/mod.rs b/talpid-core/src/offline/mod.rs index 6cbbf04e9e..38ebc3fb1e 100644 --- a/talpid-core/src/offline/mod.rs +++ b/talpid-core/src/offline/mod.rs @@ -1,3 +1,6 @@ +use futures::sync::mpsc::UnboundedSender; +use tunnel_state_machine::TunnelCommand; + #[cfg(target_os = "macos")] #[path = "macos.rs"] mod imp; @@ -10,4 +13,10 @@ mod imp; #[path = "dummy.rs"] mod imp; -pub use self::imp::{is_offline, spawn_monitor}; +pub use self::imp::is_offline; + +pub struct MonitorHandle(imp::MonitorHandle); + +pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<MonitorHandle, imp::Error> { + Ok(MonitorHandle(imp::spawn_monitor(sender)?)) +} diff --git a/talpid-core/src/offline/windows.rs b/talpid-core/src/offline/windows.rs index 1258f1ba11..88607cd47b 100644 --- a/talpid-core/src/offline/windows.rs +++ b/talpid-core/src/offline/windows.rs @@ -162,7 +162,9 @@ impl Drop for BroadcastListener { } } -pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<BroadcastListener> { +pub type MonitorHandle = BroadcastListener; + +pub fn spawn_monitor(sender: UnboundedSender<TunnelCommand>) -> Result<MonitorHandle> { let listener = BroadcastListener::start(move |message: UINT, wparam: WPARAM, _lparam: LPARAM| { if message == WM_POWERBROADCAST { |
