use cosmicus::{ runner::{Runner, WorkflowMessage, WorkflowRunner}, Client, ClientPlugin, }; struct MyPlugin; impl ClientPlugin for MyPlugin { fn on_init(&self, _runner: &Runner) { log::info!("MyPlugin init"); } fn on_event(&self, event: &WorkflowMessage) { log::info!("MyPlugin on_event: {:?}", event); } fn on_workflow_runner_init(&self, _runner: &WorkflowRunner) { log::info!("MyPlugin on_workflow_runner_init"); } } #[tokio::main] async fn main() -> anyhow::Result<()> { let _res = env_logger::builder() .target(env_logger::Target::Stdout) .filter_level(log::LevelFilter::Info) .try_init(); let client = Client::builder() .id("runner") .url("ws://localhost:5001") .build()?; client.register_plugin(MyPlugin {}); let mut connect_times = 0; loop { log::info!("Connecting... {}", connect_times); if let Err(err) = client.connect().await { log::error!("Error connecting: {}", err); tokio::time::sleep(tokio::time::Duration::from_secs(5)).await; } connect_times += 1; } }