[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.
- [gnunet-scheme] 04/324: Define CHK URIs and parsing, (continued)
- [gnunet-scheme] 04/324: Define CHK URIs and parsing, gnunet, 2021/09/21
- [gnunet-scheme] 03/324: Define (de-)ASCIIification procedures for hash codes, gnunet, 2021/09/21
- [gnunet-scheme] 07/324: Fix some exports and imports, gnunet, 2021/09/21
- [gnunet-scheme] 01/324: New module: (gnu gnunet directory), gnunet, 2021/09/21
- [gnunet-scheme] 10/324: Define a few libextractor metaformats, gnunet, 2021/09/21
- [gnunet-scheme] 13/324: Include the plugin name in item meta-data, gnunet, 2021/09/21
- [gnunet-scheme] 08/324: Define libextractor metatypes, gnunet, 2021/09/21
- [gnunet-scheme] 06/324: Begin defining (gnu gnunet metadata), gnunet, 2021/09/21
- [gnunet-scheme] 14/324: Define a new binding construct, gnunet, 2021/09/21
- [gnunet-scheme] 18/324: Fix variable references, gnunet, 2021/09/21
- [gnunet-scheme] 16/324: Define relevant serialised structures for metadata,
gnunet <=
- [gnunet-scheme] 05/324: Correct dependencies in (gnu gnunet directory), gnunet, 2021/09/21
- [gnunet-scheme] 15/324: Define a meta data deserialisation procedure, gnunet, 2021/09/21
- [gnunet-scheme] 12/324: [guile-zlib] Bind the uncompress function, gnunet, 2021/09/21
- [gnunet-scheme] 22/324: Don't forget to pass the plugin name, gnunet, 2021/09/21
- [gnunet-scheme] 21/324: Fix typo, gnunet, 2021/09/21
- [gnunet-scheme] 19/324: Define a few missing functions, gnunet, 2021/09/21
- [gnunet-scheme] 27/324: Define bytevector slices, gnunet, 2021/09/21
- [gnunet-scheme] 09/324: Fix libextractor imports, gnunet, 2021/09/21
- [gnunet-scheme] 11/324: Fix some imports and exports, gnunet, 2021/09/21
- [gnunet-scheme] 17/324: Fix libextractor imports, gnunet, 2021/09/21