synchronization
This commit is contained in:
21
main.rkt
21
main.rkt
@@ -25,6 +25,9 @@
|
|||||||
(date-minute d)
|
(date-minute d)
|
||||||
(date-second d))))
|
(date-second d))))
|
||||||
|
|
||||||
|
(define sync-count 0)
|
||||||
|
(define sync-sem (make-semaphore))
|
||||||
|
|
||||||
|
|
||||||
(define log-callbacks #f)
|
(define log-callbacks #f)
|
||||||
(set! log-callbacks '())
|
(set! log-callbacks '())
|
||||||
@@ -72,6 +75,13 @@
|
|||||||
(lc (log-callbacks))
|
(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))
|
(enqueue! log-queue (list topic level dt msg))
|
||||||
(unless (null? lc)
|
(unless (null? lc)
|
||||||
(for-each (λ (log-entry)
|
(for-each (λ (log-entry)
|
||||||
@@ -139,7 +149,7 @@
|
|||||||
|
|
||||||
(define-syntax def-log2
|
(define-syntax def-log2
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((_ id parent receiver log-callbacks dbgn infon warnn errn fataln)
|
((_ id parent receiver log-callbacks dbgn infon warnn errn fataln syncn)
|
||||||
(begin
|
(begin
|
||||||
(define l (make-logger 'id parent))
|
(define l (make-logger 'id parent))
|
||||||
(define receiver (make-log-receiver l 'debug))
|
(define receiver (make-log-receiver l 'debug))
|
||||||
@@ -150,6 +160,12 @@
|
|||||||
(define (warnn msg . args) (log 'warning msg args))
|
(define (warnn msg . args) (log 'warning msg args))
|
||||||
(define (errn msg . args) (log 'error msg args))
|
(define (errn msg . args) (log 'error msg args))
|
||||||
(define (fataln msg . args) (log 'fatal 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))
|
(log-to* receiver (λ () log-callbacks))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -166,8 +182,9 @@
|
|||||||
[warn-name (format-id #'id "warn-~a" #'prefix)]
|
[warn-name (format-id #'id "warn-~a" #'prefix)]
|
||||||
[err-name (format-id #'id "err-~a" #'prefix)]
|
[err-name (format-id #'id "err-~a" #'prefix)]
|
||||||
[fatal-name (format-id #'id "fatal-~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)
|
((_ id name)
|
||||||
|
|||||||
Reference in New Issue
Block a user