summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-20 22:28:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-24 12:45:11 +0000
commit5443a67fd49d56c6653bf5f6bda689ec24aad91f (patch)
tree83c5a224e1c3f120edf5cfcbf5e0ca90223145fe
parent1ce409c771261a9d77fdfdaf1c8057e6e23d8b40 (diff)
downloadmullvadvpn-5443a67fd49d56c6653bf5f6bda689ec24aad91f.tar.xz
mullvadvpn-5443a67fd49d56c6653bf5f6bda689ec24aad91f.zip
Create `DaemonCommandChannel` helper type
-rw-r--r--mullvad-daemon/src/lib.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index e9a5c12447..0e9783b232 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -299,6 +299,31 @@ impl DaemonExecutionState {
}
}
+pub struct DaemonCommandChannel {
+ sender: DaemonCommandSender,
+ receiver: UnboundedReceiver<InternalDaemonEvent>,
+}
+
+impl DaemonCommandChannel {
+ pub fn new() -> Self {
+ let (untracked_sender, receiver) = futures::sync::mpsc::unbounded();
+ let sender = DaemonCommandSender(Arc::new(untracked_sender));
+
+ Self { sender, receiver }
+ }
+
+ pub fn sender(&self) -> DaemonCommandSender {
+ self.sender.clone()
+ }
+
+ fn destructure(self) -> (DaemonEventSender, UnboundedReceiver<InternalDaemonEvent>) {
+ let event_sender = DaemonEventSender::new(Arc::downgrade(&self.sender.0));
+
+ (event_sender, self.receiver)
+ }
+}
+
+#[derive(Clone)]
pub struct DaemonCommandSender(Arc<UnboundedSender<InternalDaemonEvent>>);
impl DaemonCommandSender {