154 lines
4.0 KiB
Scheme
154 lines
4.0 KiB
Scheme
;; Structures and interfaces for servlets.
|
|
|
|
(define-interface rt-module-language-interface
|
|
(export ((lambda-interface
|
|
with-names-from-rt-structure)
|
|
:syntax)
|
|
reify-structure
|
|
load-structure
|
|
load-config-file
|
|
rt-structure-binding))
|
|
|
|
(define-interface rt-modules-interface
|
|
(export interface-value-names
|
|
reify-structure
|
|
load-config-file
|
|
rt-structure-binding
|
|
load-structure))
|
|
|
|
(define-structure rt-module-language rt-module-language-interface
|
|
(open scheme
|
|
rt-modules)
|
|
(for-syntax (open scheme
|
|
rt-modules))
|
|
(begin
|
|
(define-syntax lambda-interface
|
|
(lambda (expr rename compare)
|
|
(let ((%lambda (rename 'lambda))
|
|
(interface-name (cadr expr))
|
|
(body (cddr expr)))
|
|
`(,%lambda ,(interface-value-names interface-name) ,@body))))
|
|
|
|
;(with-names-from-rt-structure plugin plugin-interface (main))
|
|
(define-syntax with-names-from-rt-structure
|
|
(lambda (expr rename compare)
|
|
(let ((%lambda (rename 'lambda))
|
|
(%let (rename 'let))
|
|
(%rt-structure-value (rename 'rt-structure-value))
|
|
(%rt-structure-binding (rename 'rt-structure-binding))
|
|
(rt-structure (cadr expr))
|
|
(interface-name (caddr expr))
|
|
(body (cdddr expr)))
|
|
(let ((ivn (interface-value-names interface-name)))
|
|
`(,%let ((,%rt-structure-value ,rt-structure))
|
|
((,%lambda ,ivn ,@body)
|
|
,@(map (lambda (name)
|
|
`(,%rt-structure-binding ,%rt-structure-value ',name))
|
|
ivn)))))))))
|
|
|
|
(define-structure rt-modules rt-modules-interface
|
|
(open scheme
|
|
meta-types ; syntax-type
|
|
interfaces ; for-each-declaration
|
|
define-record-types
|
|
records
|
|
signals
|
|
bindings
|
|
packages
|
|
packages-internal
|
|
locations
|
|
environments
|
|
ensures-loaded
|
|
package-commands-internal)
|
|
(files rt-module))
|
|
|
|
(define-interface servlet-handler-interface
|
|
(export servlet-handler))
|
|
|
|
|
|
(define-structures
|
|
((servlet-handler servlet-handler-interface)
|
|
(plugin-utilities plugin-utilities-interface))
|
|
(open httpd-responses
|
|
httpd-request
|
|
uri
|
|
tables ;hash-tables
|
|
define-record-types
|
|
rt-module-language ;get structures dynamically
|
|
srfi-13
|
|
srfi-14 ;CHAR-SET:DIGIT
|
|
handle-fatal-error
|
|
random ;not quite random
|
|
locks
|
|
thread-cells
|
|
profiling
|
|
httpd-logging
|
|
shift-reset
|
|
scsh
|
|
scheme
|
|
)
|
|
(files servlet-handler))
|
|
|
|
(define-interface plugin-utilities-interface
|
|
(export send/suspend
|
|
send/finish
|
|
))
|
|
|
|
(define-interface plugin-interface
|
|
(export main))
|
|
|
|
(define-interface shift-reset-interface
|
|
(export (reset :syntax)
|
|
(shift :syntax)))
|
|
|
|
(define-structure shift-reset shift-reset-interface
|
|
(open scheme
|
|
signals
|
|
escapes
|
|
thread-cells)
|
|
(files shift-reset))
|
|
|
|
(define-interface profiling-interface
|
|
(export profile-space
|
|
profile-result
|
|
profile-results
|
|
write-gnuplot-data-file
|
|
|
|
space-info-pair space-info-symbol
|
|
space-info-vector space-info-closure
|
|
space-info-location space-info-cell
|
|
space-info-channel space-info-port
|
|
space-info-ratnum space-info-record
|
|
space-info-continuation space-info-extended-number
|
|
space-info-template space-info-weak-pointer
|
|
space-info-shared-binding space-info-unused-d-header1
|
|
space-info-unused-d-header2 space-info-string
|
|
space-info-byte-vector space-info-double
|
|
space-info-bignum space-info-total
|
|
|
|
set-space-info-pair! set-space-info-symbol!
|
|
set-space-info-vector! set-space-info-closure!
|
|
set-space-info-location! set-space-info-cell!
|
|
set-space-info-channel! set-space-info-port!
|
|
set-space-info-ratnum! set-space-info-record!
|
|
set-space-info-continuation! set-space-info-extended-number!
|
|
set-space-info-template! set-space-info-weak-pointer!
|
|
set-space-info-shared-binding! set-space-info-unused-d-header1!
|
|
set-space-info-unused-d-header2! set-space-info-string!
|
|
set-space-info-byte-vector! set-space-info-double!
|
|
set-space-info-bignum! set-space-info-total!
|
|
|
|
pure-count pure-bytes
|
|
impure-count impure-bytes
|
|
total-count total-bytes
|
|
))
|
|
|
|
(define-structure profiling profiling-interface
|
|
(open let-opt
|
|
define-record-types
|
|
spatial
|
|
srfi-13
|
|
srfi-1
|
|
scsh
|
|
scheme)
|
|
(files profile)) |