gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet-scheme] 16/324: Define relevant serialised structures for metada


From: gnunet
Subject: [gnunet-scheme] 16/324: Define relevant serialised structures for metadata
Date: Tue, 21 Sep 2021 13:20:56 +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 0baef630afce05bb6186eaf8f4c47145f8a1aaf9
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Sun Nov 8 22:03:29 2020 +0000

    Define relevant serialised structures for metadata
---
 gnu/gnunet/metadata.scm | 36 +++++++++++++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 5 deletions(-)

diff --git a/gnu/gnunet/metadata.scm b/gnu/gnunet/metadata.scm
index 75e6fe1..94a0365 100644
--- a/gnu/gnunet/metadata.scm
+++ b/gnu/gnunet/metadata.scm
@@ -229,6 +229,32 @@ Other version numbers are not yet defined."
   ;; and then by 'entry' plugin names, mime-types and data blocks
   ;; as specified in those meta data entries.
 
+  ;; Entry of serialized meta data.
+  (define sizeof-MetaDataEntry 20)
+
+  (define (MetaDataEntry.type bv offset)
+    "Meta data type.  Corresponds to a @code{<meta-type>}"
+    (integer->meta-type (bytevector-u32-ref bv offset (endianness big))))
+
+  (define (MetaDataEntry.format bv offset)
+    "Meta data format.  Corresponds to a @code{<meta-format>}"
+    (integer->meta-format
+     (bytevector-u32-ref bv (+ offset 4) (endianness big))))
+
+  (define (MetaDataEntry.data-size bv offset)
+    "Number of bytes of meta data."
+    (bytevector-u32-ref bv (+ offset 8) (endianness big)))
+
+  (define (MetaDataEntry.plugin-name-length bv offset)
+    "Number of bytes in the plugin name including 0-terminator.
+0 for NULL."
+    (bytevector-u32-ref bv (+ offset 12) (endianness big)))
+
+  (define (MetaDataEntry.mime-type-length bv offset)
+    "Number of bytes in the mime type including 0-terminator.
+0 for NULL."
+    (bytevector-u32-ref bv (+ offset 16) (endianness big)))
+
   ;; TODO: bytevector slices
   (define meta-data-deserialize
     (case-lambda
@@ -251,12 +277,12 @@ TODO: perhaps a variant raising conditions may be more 
informative."
              (!! (and (<= 0 size)
                       (<= (+ offset size) (bytevector-length bv))))
              ;; Header checks
-             (? (< size sizeof-MetaData) #f)
-             (! version (bitwise-and (MetaData.version bv offset)
+             (? (< size sizeof-MetaDataHeader) #f)
+             (! version (bitwise-and (MetaDataHeader.version bv offset)
                                      HEADER_VERSION_MASK))
              (? (not (= 2 version)) #f) ; unsupported version
-             (! ic (MetaData.entries bv offset size))
-             (! data-size (MetaData.dataSize bv offset size))
+             (! ic (MetaDataHeader.entries bv offset))
+             (! data-size (MetaDataHeader.size bv offset))
              (? (or (> (* ic sizeof-MetaDataEntry) data-size)
                     (and (not (= 0 ic))
                          ;; TODO: isn't this clause redundant?
@@ -265,7 +291,7 @@ TODO: perhaps a variant raising conditions may be more 
informative."
                 #f)
              ;; Decompression
              (! compressed?
-                (not (= 0 (bitwise-and (MetaData.version bv offset)))))
+                (not (= 0 (bitwise-and (MetaDataHeader.version bv offset)))))
              (<- (cdata-bv cdata-offset)
                  (cond ((not compressed?)
                         (values bv (+ offset sizeof-MetaDataHeader)))

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