summaryrefslogtreecommitdiffhomepage
path: root/src/process/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/process/mod.rs')
-rw-r--r--src/process/mod.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/process/mod.rs b/src/process/mod.rs
index 2d06ab4ae0..d3aad8018a 100644
--- a/src/process/mod.rs
+++ b/src/process/mod.rs
@@ -98,6 +98,32 @@ fn write_argument(fmt: &mut fmt::Formatter, arg: &str) -> fmt::Result {
Ok(())
}
+
+impl MonitoredChild for ClonableChild {
+ fn wait(&self) -> io::Result<bool> {
+ ClonableChild::wait(self).map(|exit_status| exit_status.success())
+ }
+
+ fn kill(&self) -> io::Result<()> {
+ ClonableChild::kill(self)
+ }
+
+ fn stdout(&mut self) -> Option<ChildStdout> {
+ self.stdout()
+ }
+
+ fn stderr(&mut self) -> Option<ChildStderr> {
+ self.stderr()
+ }
+}
+
+impl ChildSpawner<ClonableChild> for OpenVpnBuilder {
+ fn spawn(&mut self) -> io::Result<ClonableChild> {
+ OpenVpnBuilder::spawn(self).map(|child| child.into_clonable())
+ }
+}
+
+
#[cfg(test)]
mod tests {
use net::RemoteAddr;