diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-06-16 15:29:15 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-06-16 15:29:15 +0200 |
| commit | 29de1387c9cdcd2a06bbb6ee1c4c9f36734f6107 (patch) | |
| tree | 11f80ee610fb2e3ee73a8361ef5d03491bdb8830 /talpid_ipc/src | |
| parent | c2aaa4eb26af015ef949785668751cded783675d (diff) | |
| parent | 44346a5d28264ef15915336096a4e0d622d662ec (diff) | |
| download | mullvadvpn-29de1387c9cdcd2a06bbb6ee1c4c9f36734f6107.tar.xz mullvadvpn-29de1387c9cdcd2a06bbb6ee1c4c9f36734f6107.zip | |
Merge branch 'master-new-daemon'
Diffstat (limited to 'talpid_ipc/src')
| -rw-r--r-- | talpid_ipc/src/lib.rs | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/talpid_ipc/src/lib.rs b/talpid_ipc/src/lib.rs index f6d4acea19..3ef9bf4733 100644 --- a/talpid_ipc/src/lib.rs +++ b/talpid_ipc/src/lib.rs @@ -26,18 +26,6 @@ pub type IpcServerId = String; error_chain!{ errors { - ReadFailure { - description("Could not read IPC message") - } - ParseFailure { - description("Unable to serialize/deserialize message") - } - CouldNotStartServer { - description("Failed to start the IPC server") - } - SendError { - description("Unable to send message") - } IpcServerError { description("Error in IPC server") } @@ -74,17 +62,28 @@ impl IpcServer { .chain_err(|| ErrorKind::IpcServerError) } + /// Returns the localhost address this `IpcServer` is listening on. pub fn address(&self) -> &str { &self.address } - /// Consumes the server, stops it and waits for it to finish. - pub fn stop(self) { - self.server.close(); + /// Creates a handle bound to this `IpcServer` that can be used to shut it down. + pub fn close_handle(&self) -> CloseHandle { + CloseHandle(self.server.close_handle()) } - /// Consumes the server and waits for it to finish. + /// Consumes the server and waits for it to finish. Get an `CloseHandle` before calling this + /// if you want to be able to shut the server down. pub fn wait(self) -> Result<()> { self.server.wait().chain_err(|| ErrorKind::IpcServerError) } } + +#[derive(Clone)] +pub struct CloseHandle(jsonrpc_ws_server::CloseHandle); + +impl CloseHandle { + pub fn close(self) { + self.0.close(); + } +} |
