summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-11-15 17:20:31 +0100
committerLinus Färnstrand <linus@mullvad.net>2018-11-16 10:10:03 +0100
commit2c4f999ae036e2c88c4430582633d3bcf8a79800 (patch)
tree5b51c7fcad9e7bfbe9fc76e385518f9aa2597b66
parent74188a87413f4d99c48e05b808a1483d11c28bbd (diff)
downloadmullvadvpn-2c4f999ae036e2c88c4430582633d3bcf8a79800.tar.xz
mullvadvpn-2c4f999ae036e2c88c4430582633d3bcf8a79800.zip
Wrap offline monitor handle in a fixed type
-rw-r--r--talpid-core/src/offline/dummy.rs6
-rw-r--r--talpid-core/src/offline/macos.rs6
-rw-r--r--talpid-core/src/offline/mod.rs11
-rw-r--r--talpid-core/src/offline/windows.rs4
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 {