40 lines
1.6 KiB
Racket
40 lines
1.6 KiB
Racket
#lang racket/base
|
|
(require racket/contract
|
|
web-server/http
|
|
web-server/servlet/servlet-structs)
|
|
|
|
(define-struct manager (create-instance
|
|
adjust-timeout!
|
|
clear-continuations!
|
|
continuation-store!
|
|
continuation-lookup
|
|
continuation-peek))
|
|
|
|
(define-struct (exn:fail:servlet-manager:no-instance exn:fail) (expiration-handler))
|
|
(define-struct (exn:fail:servlet-manager:no-continuation exn:fail) (expiration-handler))
|
|
|
|
(provide/contract
|
|
[struct manager ([create-instance ((-> void) . -> . number?)]
|
|
[adjust-timeout! (number? number? . -> . void)]
|
|
[clear-continuations! (number? . -> . void)]
|
|
[continuation-store!
|
|
(->
|
|
number? any/c
|
|
(or/c false/c
|
|
(request? . -> . can-be-response?))
|
|
(list/c number? number?))]
|
|
[continuation-lookup (number? number? number? . -> . any/c)]
|
|
[continuation-peek (number? number? number? . -> . any/c)])]
|
|
[struct (exn:fail:servlet-manager:no-instance exn:fail)
|
|
([message string?]
|
|
[continuation-marks continuation-mark-set?]
|
|
[expiration-handler
|
|
(or/c false/c
|
|
(request? . -> . can-be-response?))])]
|
|
[struct (exn:fail:servlet-manager:no-continuation exn:fail)
|
|
([message string?]
|
|
[continuation-marks continuation-mark-set?]
|
|
[expiration-handler
|
|
(or/c false/c
|
|
(request? . -> . can-be-response?))])])
|