diff options
Diffstat (limited to 'guix-qa-frontpage/utils.scm')
-rw-r--r-- | guix-qa-frontpage/utils.scm | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/guix-qa-frontpage/utils.scm b/guix-qa-frontpage/utils.scm index 8009b59..63b741c 100644 --- a/guix-qa-frontpage/utils.scm +++ b/guix-qa-frontpage/utils.scm @@ -25,45 +25,9 @@ #:use-module (fibers channels) #:use-module (knots) #:use-module (zlib) - #:export (fiberize - non-blocking + #:export (non-blocking call-with-zlib-input-port*)) -(define* (fiberize proc #:key (parallelism 1)) - (let ((channel (make-channel))) - (for-each - (lambda _ - (spawn-fiber - (lambda () - (while #t - (let ((reply-channel args (car+cdr - (get-message channel)))) - (put-message - reply-channel - (with-exception-handler - (lambda (exn) - (cons 'exception exn)) - (lambda () - (with-throw-handler #t - (lambda () - (call-with-values - (lambda () - (apply proc args)) - (lambda vals - (cons 'result vals)))) - (lambda _ - (backtrace)))) - #:unwind? #t))))) - #:parallel? #t)) - (iota parallelism)) - - (lambda args - (let ((reply-channel (make-channel))) - (put-message channel (cons reply-channel args)) - (match (get-message reply-channel) - (('result . vals) (apply values vals)) - (('exception . exn) (raise-exception exn))))))) - (define (non-blocking thunk) (let ((channel (make-channel))) (call-with-default-io-waiters |