MCPcopy Create free account
hub / github.com/ScriptedAlchemy/tracedecay / notify_hook_event_inner

Function notify_hook_event_inner

src/daemon.rs:276–321  ·  view source on GitHub ↗
(project_path: &Path, event: DaemonHookEvent)

Source from the content-addressed store, hash-verified

274
275#[cfg(unix)]
276async fn notify_hook_event_inner(project_path: &Path, event: DaemonHookEvent) {
277 let Ok(socket_path) = default_socket_path() else {
278 return;
279 };
280 if !socket_path.exists() {
281 return;
282 }
283 let Ok(handshake) =
284 DaemonHandshake::for_current_client(Some(project_path.to_path_buf()), None, false, false)
285 else {
286 return;
287 };
288 let Ok(params) = serde_json::to_value(event) else {
289 return;
290 };
291 let request = JsonRpcRequest {
292 jsonrpc: "2.0".to_string(),
293 id: None,
294 method: HOOK_EVENT_METHOD.to_string(),
295 params: Some(params),
296 };
297 let Ok(line) = serde_json::to_string(&request) else {
298 return;
299 };
300 let Ok(stream) = UnixStream::connect(socket_path).await else {
301 return;
302 };
303 let Ok(handshake_line) = handshake.to_line() else {
304 return;
305 };
306 let (_reader, mut writer) = stream.into_split();
307 if writer.write_all(handshake_line.as_bytes()).await.is_err() {
308 return;
309 }
310 if writer.write_all(b"\n").await.is_err() {
311 return;
312 }
313 if writer.write_all(line.as_bytes()).await.is_err() {
314 return;
315 }
316 if writer.write_all(b"\n").await.is_err() {
317 return;
318 }
319 let _ = writer.flush().await;
320 let _ = writer.shutdown().await;
321}
322
323#[cfg(not(unix))]
324pub async fn notify_hook_event(project_path: &Path, event: DaemonHookEvent) {

Callers 1

notify_hook_eventFunction · 0.85

Calls 5

default_socket_pathFunction · 0.85
existsMethod · 0.80
to_lineMethod · 0.80
shutdownMethod · 0.80
flushMethod · 0.45

Tested by

no test coverage detected