diff options
author | Maxime Devos <maximedevos@telenet.be> | 2021-09-13 17:34:16 +0200 |
---|---|---|
committer | Maxime Devos <maximedevos@telenet.be> | 2021-09-21 12:21:07 +0200 |
commit | 7dfbb2919fcf908944187e99282d7221d7f1c36f (patch) | |
tree | 8baa2c65b2484df2b11997e0bd6b70793c1cbb8f /examples | |
parent | ec2062f0da48c494a6b91cfb8bf31d4edb218ba3 (diff) | |
download | gnunet-scheme-7dfbb2919fcf908944187e99282d7221d7f1c36f.tar.gz gnunet-scheme-7dfbb2919fcf908944187e99282d7221d7f1c36f.zip |
examples: Distribute the example.
TODO: document the examples somewhere.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/nse-web.scm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/examples/nse-web.scm b/examples/nse-web.scm new file mode 100644 index 0000000..8d9d810 --- /dev/null +++ b/examples/nse-web.scm | |||
@@ -0,0 +1,45 @@ | |||
1 | ;; Copyright (C) 2021 Maxime Devos | ||
2 | ;; SPDX-License-Identifier: FSFAP | ||
3 | ;; Copying and distribution of this file, with or without modification, | ||
4 | ;; are permitted in any medium without royalty provided the copyright | ||
5 | ;; notice and this notice are preserved. This file is offered as-is, | ||
6 | ;; without any warranty. | ||
7 | |||
8 | (use-modules (fibers) | ||
9 | (gnu gnunet config db) | ||
10 | (gnu gnunet config fs) | ||
11 | (rnrs hashtables) | ||
12 | (gnu gnunet nse client) | ||
13 | (web server) | ||
14 | (srfi srfi-11)) | ||
15 | |||
16 | (define config (load-configuration)) | ||
17 | |||
18 | (define (url-handler server request body) | ||
19 | (define current-estimate (estimate server)) | ||
20 | (define body | ||
21 | (if current-estimate | ||
22 | (format #f "timestamp: ~a~%number peers: ~a~%stddev logarithm: ~a" | ||
23 | (estimate:timestamp current-estimate) | ||
24 | (estimate:number-peers current-estimate) | ||
25 | (estimate:standard-deviation current-estimate)) | ||
26 | "no estimate available yet ...")) | ||
27 | (values '((content-type text/plain)) body #f)) | ||
28 | |||
29 | (define (start config) | ||
30 | (define nse-server (connect config)) | ||
31 | (define impl (lookup-server-impl 'fiberized)) | ||
32 | (define server (open-server impl `(#:port 8089))) | ||
33 | (define (url-handler* request body) | ||
34 | (url-handler nse-server request body)) | ||
35 | (let loop () | ||
36 | (let-values (((client request body) | ||
37 | (read-client impl server))) | ||
38 | (spawn-fiber | ||
39 | (lambda () | ||
40 | (let-values (((response body state) | ||
41 | (handle-request url-handler* request body '()))) | ||
42 | (write-client impl server client response body))))) | ||
43 | (loop))) | ||
44 | |||
45 | (run-fibers (lambda () (start config))) | ||