resume.ss
(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?)))
  
  ;; not needed by the resume unit, just here to keep dv/iu/s from complaining
  (define initial-request #f) 
  (define-values/invoke-unit/sig resume^ resume@ #f servlet^))