summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-10-21 20:52:09 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-10-21 20:52:09 +0200
commit94e299928560b58791e02d5143530e7f534e843c (patch)
treee4f252510c3c312df09bf266b2756e62f2e38f7b
parent43f146848fd5a57cb3d40cbc513e87d9431fb1e9 (diff)
downloadrebel-94e299928560b58791e02d5143530e7f534e843c.tar
rebel-94e299928560b58791e02d5143530e7f534e843c.zip
runner: expose reply channel
-rw-r--r--src/executor.rs2
-rw-r--r--src/runner/container/mod.rs4
-rw-r--r--src/runner/mod.rs3
3 files changed, 5 insertions, 4 deletions
diff --git a/src/executor.rs b/src/executor.rs
index 5dec81d..853d2be 100644
--- a/src/executor.rs
+++ b/src/executor.rs
@@ -244,7 +244,7 @@ impl<'ctx> Executor<'ctx> {
input,
};
- runner.run(&task)
+ runner.spawn(&task).recv().expect("IPC recv() error")
}
fn update_runnable(&mut self, task_ref: &TaskRef) {
diff --git a/src/runner/container/mod.rs b/src/runner/container/mod.rs
index c9032e4..99bbb62 100644
--- a/src/runner/container/mod.rs
+++ b/src/runner/container/mod.rs
@@ -79,13 +79,13 @@ impl ContainerRunner {
}
impl super::Runner for ContainerRunner {
- fn run(&self, task: &runner::Task) -> Result<runner::TaskOutput> {
+ fn spawn(&self, task: &runner::Task) -> ipc::IpcReceiver<Result<runner::TaskOutput>> {
let (reply_tx, reply_rx) = ipc::channel().expect("IPC channel creation failed");
self.channel
.send(Request(task.clone(), reply_tx))
.expect("ContainerRunner task submission failed");
- reply_rx.recv().expect("IPC recv() error")
+ reply_rx
}
}
diff --git a/src/runner/mod.rs b/src/runner/mod.rs
index a0b88ef..02e7884 100644
--- a/src/runner/mod.rs
+++ b/src/runner/mod.rs
@@ -1,5 +1,6 @@
pub mod container;
+use ipc_channel::ipc;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
@@ -27,5 +28,5 @@ pub struct Task {
}
pub trait Runner {
- fn run(&self, task: &Task) -> Result<TaskOutput>;
+ fn spawn(&self, task: &Task) -> ipc::IpcReceiver<Result<TaskOutput>>;
}