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 "params": request.params,
33 }),
34 )
35 });
36
37 let tcp_socket = std::env::var(ENV_RUNNER_TCP_SOCKET).map_err(|_| {
38 std::io::Error::new(
39 std::io::ErrorKind::InvalidInput,
40 "RRQ_RUNNER_TCP_SOCKET must be set",
41 )
42 })?;
43 let addr = parse_tcp_socket(&tcp_socket)?;
44 runtime.run_tcp_with(®istry, addr, &telemetry)
45}