From f8d7b98c6b5e67addfba544551229646ee8600aa Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Mon, 20 Apr 2026 16:21:12 +0200 Subject: [PATCH] synchronization --- main.rkt | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/main.rkt b/main.rkt index 276d1c8..e57abb0 100644 --- a/main.rkt +++ b/main.rkt @@ -25,6 +25,9 @@ (date-minute d) (date-second d)))) +(define sync-count 0) +(define sync-sem (make-semaphore)) + (define log-callbacks #f) (set! log-callbacks '()) @@ -72,6 +75,13 @@ (lc (log-callbacks)) ) + (when (string=? msg "@@SYNC@@") + (set! sync-count (- sync-count 1)) + (semaphore-post sync-sem) + (set! msg "synchronization received") + (set! level 'info) + ) + (enqueue! log-queue (list topic level dt msg)) (unless (null? lc) (for-each (λ (log-entry) @@ -139,7 +149,7 @@ (define-syntax def-log2 (syntax-rules () - ((_ id parent receiver log-callbacks dbgn infon warnn errn fataln) + ((_ id parent receiver log-callbacks dbgn infon warnn errn fataln syncn) (begin (define l (make-logger 'id parent)) (define receiver (make-log-receiver l 'debug)) @@ -150,6 +160,12 @@ (define (warnn msg . args) (log 'warning msg args)) (define (errn msg . args) (log 'error msg args)) (define (fataln msg . args) (log 'fatal msg args)) + (define (syncn) (begin + (log-message l 'fatal #f "@@SYNC@@" (list (iso-timestamp) 'id)) + (set! sync-count (+ sync-count 1)) + (semaphore-wait sync-sem) + ) + ) (log-to* receiver (λ () log-callbacks)) ) ) @@ -166,8 +182,9 @@ [warn-name (format-id #'id "warn-~a" #'prefix)] [err-name (format-id #'id "err-~a" #'prefix)] [fatal-name (format-id #'id "fatal-~a" #'prefix)] + [sync-name (format-id #'id "sync-~a" #'prefix)] ) - #'(def-log2 id parent receiver log-callbacks dbg-name info-name warn-name err-name fatal-name) + #'(def-log2 id parent receiver log-callbacks dbg-name info-name warn-name err-name fatal-name sync-name) ) ) ((_ id name)