summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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 {