syndicate/drivers/config

This commit is contained in:
Tony Garnock-Jones 2016-11-23 13:49:46 +13:00
parent a6058e05d6
commit 1eeb2ce59a
5 changed files with 20 additions and 55 deletions

View File

@ -1,37 +0,0 @@
#lang syndicate/actor
;; Server Configuration
(provide (struct-out config)
spawn-configuration
define/query-config
config-ref)
(require racket/file)
(require/activate syndicate/drivers/filesystem)
(struct config (item) #:prefab)
(define (spawn-configuration path)
(actor #:name (list 'configuration-monitor path)
(during (file-content path file->list $items)
(cond
[(not items)
(log-warning "config ~s is missing" path)]
[else
(log-info "loading config ~s" path)
(for [(item items)]
(log-info "config ~s: ~s" path item)
(assert (config item)))]))))
(define-syntax define/query-config
(syntax-rules ()
[(_ id default)
(define/query-config id id default)]
[(_ id key default)
(define/query-value id default (config (list 'key $val)) val)]))
(define (config-ref key default)
(react/suspend (k)
(define/query-value actual default (config (list key $val)) val)
(on-start (flush!)
(k (actual)))))

View File

@ -9,7 +9,7 @@
(require/activate syndicate/drivers/timestate)
(require/activate syndicate/drivers/web)
(require/activate "config.rkt")
(require/activate syndicate/drivers/config)
(require/activate "hub/static-content.rkt")
(require/activate "hub/topic-demand.rkt")
(require/activate "hub/local-topic.rkt")
@ -22,22 +22,24 @@
#:once-each
["--baseurl" baseurl "Specify the canonical base URL for this hub"
(actor #:name (list 'command-line-canonical-baseurl baseurl)
(assert (config (list 'canonical-baseurl baseurl))))]
(assert (config 'command-line (list 'canonical-baseurl baseurl))))]
#:multi
[("-l" "--listen") host port "Specify one HTTP listener"
(actor #:name (list 'command-line-http-listener host port)
(assert (config (list 'http-listener host (string->number port)))))]
(assert (config 'command-line
(list 'http-listener host (string->number port)))))]
[("-o" "--option") key vals "Specify a single configuration option"
(actor #:name (list 'config-option key vals)
(assert (config (cons (string->symbol key)
(assert (config 'command-line
(cons (string->symbol key)
(port->list read (open-input-string vals))))))]
[("-f" "--config-file") filename "Specify a configuration file to load"
(spawn-configuration filename)])
(spawn-configuration filename filename)])
(actor #:name 'main
(during (config (list 'canonical-baseurl $u))
(during (config _ (list 'canonical-baseurl $u))
(assert (canonical-baseurl u)))
(define/query-set canonical-baseurls ($ c (canonical-baseurl _)) c)
@ -49,7 +51,7 @@
;; TODO: Make the too-many-canonical-baseurl-records situation recoverable.
;; TODO: And/or, make the whole application quit when it gets into a bad state.
(during (config (list 'http-listener $h $p))
(during (config _ (list 'http-listener $h $p))
(assert (http-listener h p)))
(during (http-listener $host-name $port)

View File

@ -6,7 +6,7 @@
(require/activate syndicate/drivers/timestate)
(require/activate syndicate/drivers/web)
(require/activate "../config.rkt")
(require/activate syndicate/drivers/config)
(require "../private/util.rkt")
(require "../protocol.rkt")
@ -64,8 +64,8 @@
(field [last-upstream-check 0]
[poll-interval-seconds #f])
(define/query-config min-poll-interval 60)
(define/query-config max-upstream-redirects 5)
(define/query-config _ min-poll-interval 60)
(define/query-config _ max-upstream-redirects 5)
(define/query-set poll-intervals (topic-demand requested-topic $i) i)
(begin/dataflow
@ -150,7 +150,7 @@
requested-topic
(/ (- (next-subscription-refresh) (current-inexact-milliseconds)) 1000.0))))
(define/query-config subscription-retry-delay 600)
(define/query-config _ subscription-retry-delay 600)
(during (canonical-baseurl $baseurl)
(define callback (canonical-url baseurl `("sub" (,sub-id ()))))

View File

@ -7,7 +7,7 @@
(require/activate syndicate/drivers/timestate)
(require/activate syndicate/drivers/web)
(require/activate "../config.rkt")
(require/activate syndicate/drivers/config)
(require "../private/util.rkt")
(require "../protocol.rkt")
@ -90,11 +90,11 @@
[message-queue (make-queue)]
[dead-letters (make-queue)])
(define/query-config max-dead-letters 10)
(define/query-config initial-retry-delay 5.0)
(define/query-config max-delivery-retries 10)
(define/query-config retry-delay-multiplier 1.618)
(define/query-config max-retry-delay 30)
(define/query-config _ max-dead-letters 10)
(define/query-config _ initial-retry-delay 5.0)
(define/query-config _ max-delivery-retries 10)
(define/query-config _ retry-delay-multiplier 1.618)
(define/query-config _ max-retry-delay 30)
(stop-when (rising-edge (> (queue-length (dead-letters)) (max-dead-letters)))
(log-info "Too many dead letters for ~a" callback))

View File

@ -7,7 +7,7 @@
(require json)
(require/activate syndicate/drivers/web)
(require/activate "../config.rkt")
(require/activate syndicate/drivers/config)
(require "../private/util.rkt")
(require "../protocol.rkt")