MCPcopy Create free account
hub / github.com/dtormoen/tsk-tsk / run

Method run

src/server/mod.rs:84–130  ·  view source on GitHub ↗

Start the server and process tasks

(&self)

Source from the content-addressed store, hash-verified

82
83 /// Start the server and process tasks
84 pub async fn run(&self) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
85 // Check if server is already running
86 if self.lifecycle.is_server_running() {
87 return Err("Server is already running".into());
88 }
89
90 // Write PID file
91 self.lifecycle.write_pid()?;
92
93 self.emit(ServerEvent::StatusMessage(format!(
94 "tsk server started (PID {})",
95 std::process::id()
96 )));
97
98 // Start the task scheduler in the background
99 let scheduler = self.scheduler.clone();
100 let workers = self.workers;
101 let event_sender_clone = self.event_sender.clone();
102 let scheduler_handle = tokio::spawn(async move {
103 if let Err(e) = scheduler.lock().await.start(workers).await {
104 crate::tui::events::emit_or_print(
105 &event_sender_clone,
106 ServerEvent::WarningMessage(format!("Scheduler error: {e}")),
107 );
108 }
109 });
110 *self.scheduler_handle.lock().await = Some(scheduler_handle);
111
112 // Wait for the quit signal from the scheduler (quit-when-done mode)
113 self.quit_signal.notified().await;
114 self.emit(ServerEvent::StatusMessage(
115 "Received quit signal from scheduler...".to_string(),
116 ));
117
118 // Wait for the scheduler task to finish its cleanup
119 if let Some(handle) = self.scheduler_handle.lock().await.take() {
120 let _ = handle.await;
121 }
122
123 // Clean up server resources
124 self.lifecycle.cleanup()?;
125
126 // Ensure terminal title is restored
127 self.app_context.terminal_operations().restore_title();
128
129 Ok(())
130 }
131
132 /// Perform graceful shutdown: kill managed containers, drain pool, mark tasks cancelled, cleanup.
133 ///

Callers

nothing calls this directly

Calls 8

emit_or_printFunction · 0.85
is_server_runningMethod · 0.80
write_pidMethod · 0.80
startMethod · 0.80
cleanupMethod · 0.80
restore_titleMethod · 0.80
terminal_operationsMethod · 0.80
emitMethod · 0.45

Tested by

no test coverage detected