trace-logger --> current-trace-procedures
This commit is contained in:
parent
ca1c0f6645
commit
fb3ed65831
|
@ -1,6 +1,6 @@
|
||||||
#lang racket/base
|
#lang racket/base
|
||||||
|
|
||||||
(provide trace-logger
|
(provide current-trace-procedures
|
||||||
trace-turn-begin
|
trace-turn-begin
|
||||||
trace-turn-end
|
trace-turn-end
|
||||||
trace-actor-spawn
|
trace-actor-spawn
|
||||||
|
@ -51,11 +51,13 @@
|
||||||
|
|
||||||
(struct trace-notification (source sink type detail) #:prefab)
|
(struct trace-notification (source sink type detail) #:prefab)
|
||||||
|
|
||||||
(define trace-logger (make-logger 'syndicate-trace))
|
(define current-trace-procedures (make-parameter '()))
|
||||||
|
|
||||||
(define-syntax-rule (notify! src snk typ det)
|
(define-syntax-rule (notify! src snk typ det)
|
||||||
(when (log-level? trace-logger 'info)
|
(let ((trace-procedures (current-trace-procedures)))
|
||||||
(log-message trace-logger 'info typ "" (trace-notification src snk typ det) #f)))
|
(when (pair? trace-procedures)
|
||||||
|
(define n (trace-notification src snk typ det))
|
||||||
|
(for-each (lambda (procedure) (procedure n)) trace-procedures))))
|
||||||
|
|
||||||
(define (cons-pid pid)
|
(define (cons-pid pid)
|
||||||
(if pid
|
(if pid
|
||||||
|
|
|
@ -165,13 +165,20 @@
|
||||||
(format-pids sink)
|
(format-pids sink)
|
||||||
(pretty-format body)))]))
|
(pretty-format body)))]))
|
||||||
|
|
||||||
(define (display-trace)
|
(define (install-trace-procedure!)
|
||||||
(define receiver (make-log-receiver trace-logger 'info))
|
(define logger (make-logger 'syndicate-trace))
|
||||||
|
(define (trace-via-logger n)
|
||||||
|
(log-message logger 'info (trace-notification-type n) "" n #f))
|
||||||
|
(current-trace-procedures (cons trace-via-logger (current-trace-procedures)))
|
||||||
|
logger)
|
||||||
|
|
||||||
|
(define ((display-trace logger))
|
||||||
|
(define receiver (make-log-receiver logger 'info))
|
||||||
(parameterize ((pretty-print-columns 100))
|
(parameterize ((pretty-print-columns 100))
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(match-define (vector level message-string data event-name) (sync receiver))
|
(match-define (vector level message-string data event-name) (sync receiver))
|
||||||
(display-notification data)
|
(display-notification data)
|
||||||
(loop))))
|
(loop))))
|
||||||
|
|
||||||
(void (when (not #f) ;; TODO
|
(void (when (not (set-empty? flags))
|
||||||
(thread display-trace)))
|
(thread (display-trace (install-trace-procedure!)))))
|
||||||
|
|
Loading…
Reference in New Issue