52 lines
1.3 KiB
Rust
52 lines
1.3 KiB
Rust
use worker_lib::spawn_rhai_worker;
|
|
use rhai::Engine;
|
|
use tokio::sync::mpsc;
|
|
use tokio::signal;
|
|
use log::info;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
// Initialize the logger
|
|
env_logger::init();
|
|
|
|
let redis_url = "redis://127.0.0.1/";
|
|
let circle_name = "default".to_string();
|
|
let mut engine = Engine::new(); // Create a new, simple Rhai engine
|
|
|
|
// Register a simple 'ping' function for the readiness check.
|
|
engine.register_fn("ping", || -> String {
|
|
"pong".to_string()
|
|
});
|
|
|
|
// Create a channel for the shutdown signal
|
|
let (shutdown_tx, shutdown_rx) = mpsc::channel(1);
|
|
|
|
info!("Spawning Rhai worker for circle: {}", circle_name);
|
|
|
|
// Spawn the worker
|
|
let worker_handle = spawn_rhai_worker(
|
|
1, // circle_id
|
|
circle_name.clone(),
|
|
engine,
|
|
redis_url.to_string(),
|
|
shutdown_rx,
|
|
false, // preserve_tasks
|
|
);
|
|
|
|
info!("Worker spawned. Press Ctrl+C to shut down.");
|
|
|
|
// Wait for Ctrl+C
|
|
signal::ctrl_c().await?;
|
|
|
|
info!("Ctrl+C received. Sending shutdown signal to worker.");
|
|
let _ = shutdown_tx.send(()).await;
|
|
|
|
// Wait for the worker to finish
|
|
if let Err(e) = worker_handle.await? {
|
|
eprintln!("Worker process finished with an error: {:?}", e);
|
|
}
|
|
|
|
info!("Worker has shut down gracefully.");
|
|
|
|
Ok(())
|
|
} |