gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet-scheme] 29/42: doc/service-communication: Document <server>.


From: gnunet
Subject: [gnunet-scheme] 29/42: doc/service-communication: Document <server>.
Date: Sat, 10 Sep 2022 19:08:22 +0200

This is an automated email from the git hooks/post-receive script.

maxime-devos pushed a commit to branch master
in repository gnunet-scheme.

commit e5ccd5ad1ff65dd43a89b3a1132c06397e643881
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Fri Sep 9 18:10:50 2022 +0200

    doc/service-communication: Document <server>.
    
    * doc/service-communication.tm (<server>): Document it, give an example.
---
 doc/service-communication.tm | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/doc/service-communication.tm b/doc/service-communication.tm
index cf8d96f..5f6cdf9 100644
--- a/doc/service-communication.tm
+++ b/doc/service-communication.tm
@@ -493,7 +493,42 @@
 
   <\explain>
     
<scm|\<less\>server\<gtr\>><index|\<less\>server\<gtr\>><label|\<less\>server\<gtr\>>
-  </explain|<todo|???>>
+  <|explain>
+    The record type of server objects. The control channel and terminal
+    condition can be retrieved with <scm|server-terminal-condition> and
+    <scm|server-control-channel> respectively. In practice, you will need to
+    define a subtype of <scm|\<less\>server\<gtr\>> with
+    <scm|define-record-type> from R6RS. That way, new fields can be added and
+    a type predicate becomes available.
+
+    <\example>
+      The server type of <acronym|NSE> (network size estimation) is
+      implemented more-or-less like this:
+
+      <\scm>
+        (define-record-type (\<less\>server:nse\<gtr\> make-server
+        server:nse?)
+
+        \ \ (parent \<less\>server\<gtr\>)
+
+        \ \ (fields (immutable estimate/box server-estimate/box))
+
+        \ \ (protocol
+
+        \ \ \ \ (lambda (%make)
+
+        \ \ \ \ \ \ (lambda ()
+
+        \ \ \ \ \ \ \ \ ((%make) (make-atomic-box #false))))))
+
+        (define server (make-server))
+
+        (server:nse? server) ; -\<gtr\> #true
+
+        (atomic-box? (server-estimate/box)) ; -\<gtr\> #true
+      </scm>
+    </example>
+  </explain>
 
   <\explain>
     <scm|(maybe-send-control-message! <var|server> . <var|message>)>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]