[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.