summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-09-07 11:33:48 +0200
committerAndy Wingo <wingo@pobox.com>2016-09-07 11:33:48 +0200
commit7d969aeabe46201af639c80eb54c5e4bd97ee13a (patch)
tree17646c341b23b5230ebe4a990b5b621dd80e0d59 /examples
parentAdd channels implementation (diff)
downloadguile-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.scm13
-rw-r--r--examples/memcached-server.scm14
-rw-r--r--examples/ping-client.scm18
-rw-r--r--examples/ping-server.scm9
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)