syndicate/drivers/config
This commit is contained in:
parent
a6058e05d6
commit
1eeb2ce59a
|
@ -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)))))
|
|
@ -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)
|
||||
|
|
|
@ -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 ()))))
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue