session.scm 809 B

12345678910111213141516171819202122232425262728
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey, Jonathan Rees
  3. ; Session data
  4. ; The initializers are saved in images.
  5. (define *session-data-initializers* '())
  6. (define (make-session-data-slot! init)
  7. (let ((slot (length *session-data-initializers*)))
  8. (set! *session-data-initializers* (cons init *session-data-initializers*))
  9. (if (vector? (session-data))
  10. (set-session-data! (list->vector
  11. (reverse
  12. (cons init
  13. (reverse (vector->list (session-data))))))))
  14. slot))
  15. (define (session-data-ref slot)
  16. (vector-ref (session-data) slot))
  17. (define (session-data-set! slot value)
  18. (vector-set! (session-data) slot value))
  19. (define (initialize-session-data!)
  20. (set-session-data! (list->vector (reverse *session-data-initializers*))))