socket_runner/
socket_runner.rs1use rrq_runner::{
2 ENV_RUNNER_TCP_SOCKET, ExecutionOutcome, Registry, RunnerRuntime, parse_tcp_socket,
3};
4
5#[cfg(not(feature = "otel"))]
6use rrq_runner::telemetry::NoopTelemetry;
7#[cfg(feature = "otel")]
8use rrq_runner::telemetry::otel::{OtelTelemetry, init_tracing};
9use serde_json::json;
10
11fn main() -> Result<(), Box<dyn std::error::Error>> {
12 let runtime = RunnerRuntime::new()?;
13
14 #[cfg(feature = "otel")]
15 {
16 let _guard = runtime.enter();
17 init_tracing("rrq-runner")?;
18 }
19
20 #[cfg(feature = "otel")]
21 let telemetry = OtelTelemetry;
22 #[cfg(not(feature = "otel"))]
23 let telemetry = NoopTelemetry;
24
25 let mut registry = Registry::new();
26 registry.register("echo", |request| async move {
27 ExecutionOutcome::success(
28 request.job_id.clone(),
29 request.request_id.clone(),
30 json!({
31 "job_id": request.job_id,
32 "args": request.args,
33 "kwargs": request.kwargs,
34 }),
35 )
36 });
37
38 let tcp_socket = std::env::var(ENV_RUNNER_TCP_SOCKET).map_err(|_| {
39 std::io::Error::new(
40 std::io::ErrorKind::InvalidInput,
41 "RRQ_RUNNER_TCP_SOCKET must be set",
42 )
43 })?;
44 let addr = parse_tcp_socket(&tcp_socket)?;
45 runtime.run_tcp_with(®istry, addr, &telemetry)
46}