33 lines
855 B
Racket
33 lines
855 B
Racket
#lang racket/base
|
|
(require racket/contract)
|
|
(require web-server/dispatchers/dispatch
|
|
web-server/private/web-server-structs
|
|
web-server/private/connection-manager)
|
|
(provide/contract
|
|
[make-gc-thread (integer? . -> . thread?)]
|
|
[interface-version dispatcher-interface-version/c]
|
|
[make (-> dispatcher/c)])
|
|
|
|
(define (bytes->mb b)
|
|
(round (exact->inexact (/ b 1024 1024))))
|
|
|
|
(define (print-memory-usage)
|
|
(printf "Usage: ~aMB (of ~aMB)\n"
|
|
(bytes->mb (current-memory-use (current-server-custodian)))
|
|
(bytes->mb (current-memory-use))))
|
|
|
|
(define (make-gc-thread t)
|
|
(thread
|
|
(lambda ()
|
|
(let loop ()
|
|
(sleep t)
|
|
(printf ".")
|
|
(collect-garbage)
|
|
(loop)))))
|
|
|
|
(define interface-version 'v1)
|
|
(define ((make) conn req)
|
|
#;(dump-memory-stats)
|
|
(print-memory-usage)
|
|
(next-dispatcher))
|