(module instaweb-servlet mzscheme
(require (lib "url.ss" "net")
(lib "servlet.ss" "web-server"))
(require (file "base.ss")
(file "delirium.ss")
(file "instaweb-servlet-config.ss"))
(define start
(let ([test-url "/test"]
[test (target-test)]
[run-tests (test-runner)])
(lambda (request)
(if (string=? (url->string (request-uri request)) test-url)
(run-delirium request test run-tests)
(target-start request)))))
(define target-start
(with-handlers ([exn:fail:contract?
(lambda (exn)
(raise-exn exn:fail:delirium "Target module does not have a start procedure."))])
(dynamic-require (target-require-form) 'start)))
(define interface-version
(with-handlers ([exn:fail:contract? (lambda (exn) #f)])
(dynamic-require (target-require-form) 'interface-version)))
(define initial-timeout
(with-handlers ([exn:fail:contract? (lambda (exn) #f)])
(dynamic-require (target-require-form) 'initial-timeout)))
(define manager
(with-handlers ([exn:fail:contract? (lambda (exn) #f)])
(dynamic-require (target-require-form) 'manager)))
(define instance-expiration-handler
(with-handlers ([exn:fail:contract? (lambda (exn) #f)])
(dynamic-require (target-require-form) 'instance-expiration-handler)))
(provide start
interface-version
initial-timeout
manager
instance-expiration-handler)
)