diff options
| author | Andy Wingo <wingo@pobox.com> | 2016-09-07 11:33:48 +0200 |
|---|---|---|
| committer | Andy Wingo <wingo@pobox.com> | 2016-09-07 11:33:48 +0200 |
| commit | 7d969aeabe46201af639c80eb54c5e4bd97ee13a (patch) | |
| tree | 17646c341b23b5230ebe4a990b5b621dd80e0d59 /examples | |
| parent | Add channels implementation (diff) | |
| download | guile-fibers-7d969aeabe46201af639c80eb54c5e4bd97ee13a.tar.gz | |
Separate public and private fibers interfaces
* fibers/internal.scm: New file, factored out of (fibers).
* fibers.scm: Refactor to be just the public interface.
* fibers/channels.scm:
* web/server/fibers.scm:
* examples/memcached-client.scm:
* examples/memcached-server.scm:
* examples/ping-client.scm:
* examples/ping-server.scm: Adapt to interface changes.
* Makefile.am (SOURCES): Add (fibers internal).
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/memcached-client.scm | 13 | ||||
| -rw-r--r-- | examples/memcached-server.scm | 14 | ||||
| -rw-r--r-- | examples/ping-client.scm | 18 | ||||
| -rw-r--r-- | examples/ping-server.scm | 9 |
4 files changed, 21 insertions, 33 deletions
diff --git a/examples/memcached-client.scm b/examples/memcached-client.scm index 9adc58c..3b6e1ec 100644 --- a/examples/memcached-client.scm +++ b/examples/memcached-client.scm @@ -29,10 +29,8 @@ (setvbuf port 'block 1024)) (define (server-error port msg . args) - (apply format (current-error-port) msg args) - (newline (current-error-port)) (close-port port) - (suspend)) + (apply error msg args)) (define (parse-int port val) (let ((num (string->number val))) @@ -139,10 +137,11 @@ (let ((addrinfo (car (getaddrinfo "localhost" (number->string 11211))))) (let lp ((n 0)) (when (< n num-clients) - (spawn + (spawn-fiber (lambda () (client-loop addrinfo n num-connections))) - (lp (1+ n))))) - (run)) + (lp (1+ n)))))) -(apply run-memcached-test (map string->number (cdr (program-arguments)))) +(run-fibers + (lambda () + (apply run-memcached-test (map string->number (cdr (program-arguments)))))) diff --git a/examples/memcached-server.scm b/examples/memcached-server.scm index 7add45f..26cca5d 100644 --- a/examples/memcached-server.scm +++ b/examples/memcached-server.scm @@ -37,10 +37,8 @@ sock)) (define (client-error port msg . args) - (put-string port (apply format #f msg args)) - (put-string port "\r\n") (close-port port) - (suspend)) + (apply error msg args)) (define (parse-int port val) (let ((num (string->number val))) @@ -130,7 +128,8 @@ (set-nonblocking! client) ;; Disable Nagle's algorithm. We buffer ourselves. (setsockopt client IPPROTO_TCP TCP_NODELAY 0) - (spawn (lambda () (client-loop client addr store))) + (spawn-fiber + (lambda () (client-loop client addr store))) (loop))))) (define* (run-memcached #:key @@ -143,9 +142,6 @@ (socket (make-default-socket family addr port))) (listen socket 128) (sigaction SIGPIPE SIG_IGN) - (spawn - (lambda () - (socket-loop socket (make-hash-table)))) - (run)) + (socket-loop socket (make-hash-table))) -(run-memcached) +(run-fibers run-memcached) diff --git a/examples/ping-client.scm b/examples/ping-client.scm index 60e5738..6b8dd79 100644 --- a/examples/ping-client.scm +++ b/examples/ping-client.scm @@ -28,12 +28,6 @@ (fcntl port F_SETFL (logior O_NONBLOCK (fcntl port F_GETFL))) (setvbuf port 'block 1024)) -(define (server-error port msg . args) - (apply format (current-error-port) msg args) - (newline (current-error-port)) - (close-port port) - (suspend)) - (define (connect-to-server addrinfo) (let ((port (socket (addrinfo:fam addrinfo) (addrinfo:socktype addrinfo) @@ -57,7 +51,8 @@ (force-output port) (let ((response (read-line port))) (unless (equal? test response) - (server-error port "Bad response: ~A (expected ~A)" response test)) + (close-port port) + (error "Bad response: ~A (expected ~A)" response test)) (lp (1+ m))))) (close-port port)) (set! *active-clients* (1- *active-clients*)) @@ -70,10 +65,11 @@ (let ((addrinfo (car (getaddrinfo "localhost" (number->string 11211))))) (let lp ((n 0)) (when (< n num-clients) - (spawn + (spawn-fiber (lambda () (client-loop addrinfo n num-connections))) - (lp (1+ n))))) - (run)) + (lp (1+ n)))))) -(apply run-ping-test (map string->number (cdr (program-arguments)))) +(run-fibers + (lambda () + (apply run-ping-test (map string->number (cdr (program-arguments)))))) diff --git a/examples/ping-server.scm b/examples/ping-server.scm index 9e28925..8ddd10e 100644 --- a/examples/ping-server.scm +++ b/examples/ping-server.scm @@ -56,7 +56,7 @@ (set-nonblocking! client) ;; Disable Nagle's algorithm. We buffer ourselves. (setsockopt client IPPROTO_TCP TCP_NODELAY 0) - (spawn (lambda () (client-loop client addr store))) + (spawn-fiber (lambda () (client-loop client addr store))) (loop))))) (define* (run-ping-server #:key @@ -69,9 +69,6 @@ (socket (make-default-socket family addr port))) (listen socket 1024) (sigaction SIGPIPE SIG_IGN) - (spawn - (lambda () - (socket-loop socket (make-hash-table)))) - (run)) + (socket-loop socket (make-hash-table))) -(run-ping-server) +(run-fibers run-ping-server) |
