diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-20 22:28:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-24 12:45:11 +0000 |
| commit | 5443a67fd49d56c6653bf5f6bda689ec24aad91f (patch) | |
| tree | 83c5a224e1c3f120edf5cfcbf5e0ca90223145fe /mullvad-daemon/src | |
| parent | 1ce409c771261a9d77fdfdaf1c8057e6e23d8b40 (diff) | |
| download | mullvadvpn-5443a67fd49d56c6653bf5f6bda689ec24aad91f.tar.xz mullvadvpn-5443a67fd49d56c6653bf5f6bda689ec24aad91f.zip | |
Create `DaemonCommandChannel` helper type
Diffstat (limited to 'mullvad-daemon/src')
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 25 |
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 { |
