pub trait ServerEvents: Send + Sync {
// Required methods
fn started(&self, server: &ServerSummary);
fn stopping(&self, server: &ServerSummary);
fn stopped(&self, server: &ServerSummary);
fn snapshot(&self, servers: &[ServerSummary]);
fn error(&self, server: &ServerSummary, error: &str);
}Expand description
Port for emitting server lifecycle events.
This trait decouples the core server lifecycle logic from transport-specific
event emission (Tauri events, SSE, logging, etc.). Implementations convert
ServerSummary to their native event format.
§Design
- Object-safe: Uses
&selffor dynamic dispatch viaArc<dyn ServerEvents> - Fire-and-forget: Methods don’t return
Result— adapters handle errors internally - Generic: No knowledge of Tauri/Axum/CLI specifics
§Example
use gglib_core::events::{ServerEvents, ServerSummary};
struct LoggingEvents;
impl ServerEvents for LoggingEvents {
fn started(&self, server: &ServerSummary) {
println!("Server {} started on port {}", server.model_name, server.port);
}
fn stopping(&self, server: &ServerSummary) {
println!("Stopping server {}", server.model_name);
}
fn stopped(&self, server: &ServerSummary) {
println!("Server {} stopped", server.model_name);
}
fn snapshot(&self, servers: &[ServerSummary]) {
println!("Server snapshot: {} running", servers.len());
}
fn error(&self, server: &ServerSummary, error: &str) {
eprintln!("Server {} error: {}", server.model_name, error);
}
}Required Methods§
Sourcefn started(&self, server: &ServerSummary)
fn started(&self, server: &ServerSummary)
Called when a server has successfully started.
Sourcefn stopping(&self, server: &ServerSummary)
fn stopping(&self, server: &ServerSummary)
Called just before stopping a server.
Sourcefn stopped(&self, server: &ServerSummary)
fn stopped(&self, server: &ServerSummary)
Called after a server has stopped.
Sourcefn snapshot(&self, servers: &[ServerSummary])
fn snapshot(&self, servers: &[ServerSummary])
Called to broadcast the current state of all running servers.
Sourcefn error(&self, server: &ServerSummary, error: &str)
fn error(&self, server: &ServerSummary, error: &str)
Called when a server error occurs.