Cleaning up servlet loading
svn: r703
This commit is contained in:
parent
346fec9154
commit
3ea5aebdc2
|
@ -291,6 +291,20 @@
|
||||||
;;;;;; (XXX: I don't know what 'typed-model-split-store0 was, so it was removed.)
|
;;;;;; (XXX: I don't know what 'typed-model-split-store0 was, so it was removed.)
|
||||||
;;;; A response
|
;;;; A response
|
||||||
(define (load-servlet/path a-path)
|
(define (load-servlet/path a-path)
|
||||||
|
(define (v0.servlet->v1.lambda servlet)
|
||||||
|
(lambda (initial-request)
|
||||||
|
(invoke-unit/sig servlet servlet^)))
|
||||||
|
(define (v0.response->v1.lambda response-path response)
|
||||||
|
(letrec ([go (lambda ()
|
||||||
|
(begin
|
||||||
|
(set! go (lambda () (load/use-compiled a-path)))
|
||||||
|
response))])
|
||||||
|
(lambda (initial-request) (go))))
|
||||||
|
(define (v1.module->v1.lambda timeout start)
|
||||||
|
(lambda (initial-request)
|
||||||
|
(adjust-timeout! timeout)
|
||||||
|
(start initial-request)))
|
||||||
|
|
||||||
(parameterize ([current-namespace (config:make-servlet-namespace)])
|
(parameterize ([current-namespace (config:make-servlet-namespace)])
|
||||||
(and (file-exists? a-path)
|
(and (file-exists? a-path)
|
||||||
(let ([s (load/use-compiled a-path)])
|
(let ([s (load/use-compiled a-path)])
|
||||||
|
@ -298,9 +312,7 @@
|
||||||
;; signed-unit servlet
|
;; signed-unit servlet
|
||||||
; MF: I'd also like to test that s has the correct import signature.
|
; MF: I'd also like to test that s has the correct import signature.
|
||||||
[(unit/sig? s)
|
[(unit/sig? s)
|
||||||
(make-cache-entry (lambda (initial-request)
|
(make-cache-entry (v0.servlet->v1.lambda s) (current-namespace))]
|
||||||
(invoke-unit/sig s servlet^))
|
|
||||||
(current-namespace))]
|
|
||||||
; FIX - reason about exceptions from dynamic require (catch and report if not already)
|
; FIX - reason about exceptions from dynamic require (catch and report if not already)
|
||||||
;; module servlet
|
;; module servlet
|
||||||
[(void? s)
|
[(void? s)
|
||||||
|
@ -310,25 +322,15 @@
|
||||||
[(v1)
|
[(v1)
|
||||||
(let ([timeout (dynamic-require module-name 'timeout)]
|
(let ([timeout (dynamic-require module-name 'timeout)]
|
||||||
[start (dynamic-require module-name 'start)])
|
[start (dynamic-require module-name 'start)])
|
||||||
(make-cache-entry
|
(make-cache-entry (v1.module->v1.lambda timeout start) (current-namespace)))]
|
||||||
(lambda (initial-request)
|
|
||||||
(adjust-timeout! timeout)
|
|
||||||
(start initial-request))
|
|
||||||
(current-namespace)))]
|
|
||||||
[else
|
[else
|
||||||
(raise (format "unknown servlet version ~e" version))]))]
|
(raise (format "unknown servlet version ~e" version))]))]
|
||||||
;; response
|
;; response
|
||||||
[(response? s)
|
[(response? s)
|
||||||
(letrec ([go (lambda ()
|
(make-cache-entry (v0.response->v1.lambda s a-path) (current-namespace))]
|
||||||
(begin
|
|
||||||
(set! go (lambda () (load/use-compiled a-path)))
|
|
||||||
s))])
|
|
||||||
(make-cache-entry (lambda (initial-request) (go))
|
|
||||||
(current-namespace)))]
|
|
||||||
[else
|
[else
|
||||||
(raise 'load-servlet/path "Loading ~e produced ~n~e~n instead of a servlet." a-path s)])))))
|
(raise 'load-servlet/path "Loading ~e produced ~n~e~n instead of a servlet." a-path s)])))))
|
||||||
|
|
||||||
|
|
||||||
(define servlet-bin?
|
(define servlet-bin?
|
||||||
(let ([svt-bin-re (regexp "^/servlets(;id.*\\*.*\\*.*)?/.*")])
|
(let ([svt-bin-re (regexp "^/servlets(;id.*\\*.*\\*.*)?/.*")])
|
||||||
(lambda (str)
|
(lambda (str)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user