.
original commit: 7db54198dfcc9d864f223b98412ef8b65e63c126
This commit is contained in:
parent
709be177ba
commit
3636a945ce
|
@ -41,7 +41,7 @@
|
|||
(channel-put-evt empty-ch (make-semaphore))] ; see poll->ch
|
||||
[tell-full
|
||||
(channel-put-evt full-ch (make-semaphore))] ; see poll->ch
|
||||
[enqueue (convert-evt
|
||||
[enqueue (handle-evt
|
||||
enqueue-ch
|
||||
(lambda (v)
|
||||
;; We received a put; enqueue it:
|
||||
|
@ -51,7 +51,7 @@
|
|||
(set! queue-last p))))]
|
||||
[mk-dequeue
|
||||
(lambda ()
|
||||
(convert-evt
|
||||
(handle-evt
|
||||
(channel-put-evt dequeue-ch (car queue-first))
|
||||
(lambda (ignored)
|
||||
;; A get succeeded; dequeue it:
|
||||
|
@ -106,7 +106,7 @@
|
|||
;; Put ----------------------------------------
|
||||
|
||||
(define (async-channel-put-evt ac v)
|
||||
(letrec ([p (convert-evt
|
||||
(letrec ([p (wrap-evt
|
||||
(guard-evt
|
||||
(lambda ()
|
||||
;; Make sure queue manager is running:
|
||||
|
@ -133,11 +133,11 @@
|
|||
;; If a value becomes available,
|
||||
;; create a waitable that returns
|
||||
;; the value:
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
normal
|
||||
(lambda (v)
|
||||
;; Return a waitable for a successful poll:
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
always-evt
|
||||
(lambda (ignored) v))))
|
||||
;; If not-ready becomes available,
|
||||
|
|
|
@ -58,11 +58,11 @@
|
|||
(lambda (s start end non-block? breakable?) (- end start))
|
||||
void
|
||||
(lambda (special non-block? breakable?) #t)
|
||||
(lambda (s start end) (convert-evt
|
||||
(lambda (s start end) (wrap-evt
|
||||
always-evt
|
||||
(lambda (x)
|
||||
(- end start))))
|
||||
(lambda (special) (convert-evt always-evt (lambda (x) #t))))))
|
||||
(lambda (special) (wrap-evt always-evt (lambda (x) #t))))))
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
|
@ -125,7 +125,7 @@
|
|||
(define special-peeked-tail #f)
|
||||
(define progress-requested? #f)
|
||||
(define (try-again)
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(semaphore-peek-evt lock-semaphore)
|
||||
(lambda (x) 0)))
|
||||
(define (make-progress)
|
||||
|
@ -423,7 +423,7 @@
|
|||
;; In poll mode, call `go' directly:
|
||||
(let ([v (go never-evt #f #t)])
|
||||
(if v
|
||||
(convert-evt always-evt (lambda (x) v))
|
||||
(wrap-evt always-evt (lambda (x) v))
|
||||
never-evt))
|
||||
;; In non-poll mode, start a thread to call go
|
||||
(nack-guard-evt
|
||||
|
@ -482,7 +482,7 @@
|
|||
[poll? #f]
|
||||
[else (try-again 0 orig-bstr)]))]))))
|
||||
(if (zero? (bytes-length orig-bstr))
|
||||
(convert-evt always-evt (lambda (x) 0))
|
||||
(wrap-evt always-evt (lambda (x) 0))
|
||||
(poll-or-spawn go)))
|
||||
|
||||
(define (read-bytes-avail!-evt bstr input-port)
|
||||
|
@ -504,7 +504,7 @@
|
|||
|
||||
(define (read-bytes-evt len input-port)
|
||||
(let ([bstr (make-bytes len)])
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(read-bytes!-evt bstr input-port)
|
||||
(lambda (v)
|
||||
(if (number? v)
|
||||
|
@ -515,10 +515,10 @@
|
|||
|
||||
(define (read-string-evt goal input-port)
|
||||
(if (zero? goal)
|
||||
(convert-evt always-evt (lambda (x) ""))
|
||||
(wrap-evt always-evt (lambda (x) ""))
|
||||
(let ([bstr (make-bytes goal)]
|
||||
[c (bytes-open-converter "UTF-8-permissive" "UTF-8")])
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(read-at-least-bytes!-evt bstr input-port
|
||||
(lambda (bstr v)
|
||||
(if (= v (bytes-length bstr))
|
||||
|
@ -556,7 +556,7 @@
|
|||
v)))))))
|
||||
|
||||
(define (read-string!-evt str input-port)
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(read-string-evt (string-length str) input-port)
|
||||
(lambda (s)
|
||||
(if (string? s)
|
||||
|
@ -580,7 +580,7 @@
|
|||
(if poll?
|
||||
#f
|
||||
(sync nack
|
||||
(finish-evt progress-evt
|
||||
(handle-evt progress-evt
|
||||
(lambda (x) (try-again)))))]
|
||||
[else
|
||||
(let ([m2 (map (lambda (p)
|
||||
|
@ -620,7 +620,7 @@
|
|||
|
||||
(define read-bytes-line-evt
|
||||
(opt-lambda (input-port [mode 'linefeed])
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(regexp-match-evt (case mode
|
||||
[(linefeed) (newline-rx "\n")]
|
||||
[(return) (newline-rx "\r")]
|
||||
|
@ -637,7 +637,7 @@
|
|||
|
||||
(define read-line-evt
|
||||
(opt-lambda (input-port [mode 'linefeed])
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(read-bytes-line-evt input-port mode)
|
||||
(lambda (s)
|
||||
(if (eof-object? s)
|
||||
|
@ -645,7 +645,7 @@
|
|||
(bytes->string/utf-8 s #\?))))))
|
||||
|
||||
(define (eof-evt input-port)
|
||||
(convert-evt
|
||||
(wrap-evt
|
||||
(regexp-match-evt #rx#"^$" input-port)
|
||||
(lambda (x)
|
||||
eof))))
|
||||
|
|
Loading…
Reference in New Issue
Block a user