gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet-scheme] 02/02: cadet/client: Process received msg:cadet:local:da


From: gnunet
Subject: [gnunet-scheme] 02/02: cadet/client: Process received msg:cadet:local:data messages.
Date: Thu, 18 Aug 2022 12:44:55 +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 e690ca1dcbd90ae805b3a32eb3d1a8a59034195d
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Thu Aug 18 12:43:46 2022 +0200

    cadet/client: Process received msg:cadet:local:data messages.
    
    * gnu/gnunet/cadet/client.scm (reconnect)[handlers]{msg:cadet:local:data}:
    New message handler.
    (reconnect)[control*]{channel}: New case.
---
 gnu/gnunet/cadet/client.scm | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/gnu/gnunet/cadet/client.scm b/gnu/gnunet/cadet/client.scm
index de7d8f0..f8b3e71 100644
--- a/gnu/gnunet/cadet/client.scm
+++ b/gnu/gnunet/cadet/client.scm
@@ -61,6 +61,7 @@
          (only (gnu gnunet mq envelope)
                attempt-irrevocable-sent!)
          (only (gnu gnunet server)
+               maybe-ask* answer
                maybe-send-control-message!
                maybe-send-control-message!*
                make-error-handler
@@ -72,7 +73,8 @@
                /hashcode:512)
          (only (gnu gnunet message protocols) message-type)
          (only (gnu gnunet mq-impl stream) connect/fibers)
-         (only (gnu gnunet mq) make-message-queue)
+         (only (gnu gnunet mq)
+               make-message-queue inject-message!)
          (only (gnu gnunet netstruct syntactic)
                sizeof select read% set%!)
          (only (gnu gnunet utils bv-slice)
@@ -175,6 +177,24 @@
                         (lambda (lost) (cons 'lost lost)))))
       (define handlers
        (message-handlers
+        (message-handler
+         (type (symbol-value message-type msg:cadet:local:data))
+         ((interpose exp) exp)
+         ((well-formed? slice) #true)
+         ((handle! slice)
+          (let^ ((! cadet-data-length (sizeof /:msg:cadet:local:data '()))
+                 (! header (slice-slice slice 0 cadet-data-length))
+                 (! tail (slice-slice slice cadet-data-length))
+                 (! channel-number
+                    (read% /:msg:cadet:local:data '(channel-number) header))
+                 (! channel
+                    (maybe-ask* terminal-condition control-channel 'channel
+                                channel-number))
+                 (? (not channel)
+                    ???))
+                ;; TODO: while the message is being processed, other messages
+                ;; cannot be accepted -- document this limitation.
+                (inject-message! mq tail))))
         (message-handler
          (type (symbol-value message-type msg:cadet:local:acknowledgement))
          ((interpose exp) exp)
@@ -278,6 +298,12 @@
           ;; Tell the service to send the messages over CADET.
           (send-channel-stuff! channel)
           (continue))
+         ;; Respond to a query of the msg:cadet:local:data message handler.
+         (('channel answer-box channel-number)
+          (answer answer-box
+                  (hashtable-ref channel-number->channel-hash-map
+                                 channel-number #false))
+          (continue))
          (('lost . lost)
           (let loop ((lost lost))
             (match lost

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