(module resume mzscheme
(require
(lib "unitsig.ss")
(lib "servlet.ss" "web-server")
(lib "servlet-sig.ss" "web-server")
(lib "response.ss" "web-server")
(lib "contract.ss")
"resume-unit.ss")
(define user? any/c)
(provide/contract
(with-user-logged-in (user? any/c . -> . any))
(set-resume-point! (user? . -> . any))
(log-in! (user? . -> . void?))
(log-out! (user? . -> . void?))
(clear-resume-table! (-> void?))
(send/suspend-to-user ((string? . -> . response?) user? . -> . request?))
(send/finish-to-user (response? user? . -> . any))
(send/forward-to-user ((string? . -> . response?) user? . -> . request?))
(send/back-to-user (response? user? . -> . any))
(resume ((user?) (any/c) . opt-> . boolean?)))
(define initial-request #f)
(define-values/invoke-unit/sig resume^ resume@ #f servlet^))