gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet-scheme] 02/04: dht/client: Extract disconnection to 'server'.


From: gnunet
Subject: [gnunet-scheme] 02/04: dht/client: Extract disconnection to 'server'.
Date: Wed, 27 Jul 2022 16:28:59 +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 98e5740845bd9e0923a14cfe4828a450149c1749
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Wed Jul 27 15:20:18 2022 +0200

    dht/client: Extract disconnection to 'server'.
    
    It's useful elsewhere as well.
    
    * gnu/gnunet/server.scm (make-disconnect!, primitive-disconnect!): New
    procedures.
    * gnu/gnunet/dht/client.scm (disconnect!): Use it.
---
 gnu/gnunet/dht/client.scm | 13 +++++--------
 gnu/gnunet/server.scm     | 29 ++++++++++++++++++++++++++---
 2 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/gnu/gnunet/dht/client.scm b/gnu/gnunet/dht/client.scm
index 7e6439d..0686ac3 100644
--- a/gnu/gnunet/dht/client.scm
+++ b/gnu/gnunet/dht/client.scm
@@ -80,7 +80,8 @@
          (gnu gnunet mq envelope)
          (only (gnu gnunet server)
                maybe-send-control-message! make-error-handler
-               <server> server-terminal-condition server-control-channel)
+               <server> server-terminal-condition server-control-channel
+               make-disconnect!)
          (only (guile)
                pk define-syntax-rule define* lambda* error
                make-hash-table hashq-set! hashq-remove! hashv-set! hashv-ref
@@ -732,13 +733,9 @@ message header is assumed to be correct."
                  ...)
             (compare extra-size (* (+ field ...) (sizeof /dht:path-element 
'()))))))
 
-    ;; TODO reduce duplication with (gnu gnunet nse client) --- maybe introduce
-    ;; (gnu gnunet client) as in the C implementation?
-    (define (disconnect! server)
-      "Asynchronuously disconnect from the DHT service and stop reconnecting,
-even if not connected.  This is an idempotent operation.  This is an
-asynchronuous request; it won't be fulfilled immediately."
-      (maybe-send-control-message! server 'disconnect!))
+    (define disconnect!
+      (make-disconnect! 'distributed-hash-table ; for error messages
+                       server:dht?))
 
     (define* (connect config #:key (connected values) (disconnected values)
                      (spawn spawn-fiber))
diff --git a/gnu/gnunet/server.scm b/gnu/gnunet/server.scm
index 23d0da7..2d0f909 100644
--- a/gnu/gnunet/server.scm
+++ b/gnu/gnunet/server.scm
@@ -20,9 +20,11 @@
 (define-library (gnu gnunet server)
   (export maybe-send-control-message!* maybe-send-control-message!
          make-error-handler
-         <server> server-terminal-condition server-control-channel)
+         <server> server-terminal-condition server-control-channel
+         make-disconnect!)
   (import (only (rnrs base)
-               begin define case else apply values quote lambda)
+               begin define case else apply values quote lambda
+               if error list)
          (only (rnrs records syntactic)
                define-record-type)
          (only (fibers conditions)
@@ -92,4 +94,25 @@ do anything if @var{server} has been permanently 
disconnected."
                  (lambda ()
                    ((%make (make-lost-and-found))
                     (make-condition)
-                    (make-channel))))))))
+                    (make-channel))))))
+
+    (define (primitive-disconnect! server)
+      "Asynchronuously disconnect from the service and stop reconnecting,
+even if not connected.  This is an idempotent operation.  This is an
+asynchronuous request; it won't be fulfilled immediately.
+
+This maybe-sends @code{disconnect!} to the control channel."
+      (maybe-send-control-message! server 'disconnect!))
+
+    (define (make-disconnect! name type?)
+      ;; for backtrace purposes, 'lambda' is not used here.
+      (define (disconnect! server)
+       "Asynchronuously disconnect from the service and stop reconnecting,
+even if not connected.  This is an idempotent operation.  This is an
+asynchronuous request; it won't be fulfilled immediately."
+       (if (type? server)
+           (primitive-disconnect! server)
+           (error 'disconnect! ; TODO: test
+                  "wrong server object type"
+                  (list name type? server))))
+      disconnect!)))

-- 
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]