15 lines
493 B
Scheme
15 lines
493 B
Scheme
#lang scheme
|
|
(require "dispatch.ss")
|
|
(provide/contract
|
|
[interface-version dispatcher-interface-version/c]
|
|
[make (() () #:rest (listof dispatcher/c) . ->* . dispatcher/c)])
|
|
|
|
(define interface-version 'v1)
|
|
(define ((make . dispatchers) conn req)
|
|
(let loop ([dispatchers dispatchers])
|
|
(if (empty? dispatchers)
|
|
(next-dispatcher)
|
|
(with-handlers ([exn:dispatcher?
|
|
(lambda (e) (loop (rest dispatchers)))])
|
|
((first dispatchers) conn req)))))
|