aboutsummaryrefslogtreecommitdiff
path: root/gnu/gnunet/util/struct.scm
Commit message (Collapse)AuthorAge
* Update copyright notices.Maxime Devos2021-09-21
|
* util/struct: Define /time-absolute.Maxime Devos2021-09-21
| | | | * gnu/gnunet/util/struct.scm (/time-absolute): New variable.
* utils: tokeniser: Split message streams into individual messages.Maxime Devos2021-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.am (modules): Add new module (gnu gnunet utils tokeniser). (SCM_TESTS): Add new test tests/tokeniser.scm. * README.org (Message queues): Describe new module. * gnu/gnunet/util/struct.scm (/:message-header): Note that the new module depends on the exact layout. * gnu/gnunet/utils/tokeniser.scm (make-tokeniser, tokeniser?, <tokeniser>): New record type. (&interrupted-tokeniser-volation) make-interrupted-tokeniser-violation) interrupted-tokeniser-violation?): New condition type. (&kaput-tokeniser-error, make-tokeniser-error, kaput-tokeniser-error?): New condition type. (add-bytevector!): New procedure. * tests/tokeniser.scm (fluffed-bytevector, no-return/overly-small, no-return/done) (no-handle/message, merge-bytevectors, catch-errors): New procedures for tests. (choose-message, choose-many-message, positions->ranges) (choose-split-positions): New QuickCheck generators for tests. ($messages-and-ranges): New QuickCheck arbitrary for tests. ("[prop] complete messages are passed through") ("message fragmented on header/data boundary reassembled") ("message fragmented in size field and after message header, some data") ("[prop] all fragmented & multiple messages received") ("overly small message error (complete header)") ("overly small message error (header split in size field)") ("huge message, split early") ("re-entrancy from message handler is detected (complete message)") ("tokeniser becomes kaput, split after size field") ("tokeniser becomes kaput, split inside size field"): New tests. (huge-bv): New variable. * tests/utils.scm (calls-in-tail-position?): New buggy procedure for tests.
* Implement self-documenting ‘network structures’Maxime Devos2021-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | In contrast to scheme-bytestructures and (gnu gnunet utils netstruct), this allows associating a synopsis, a documention string (docstring) and arbitrary properties with structures and fields. Code compilation should be faster now as well and the compiled '.go' should be smaller due to less excessive use of syntax-rules. TODO: update old modules * Makefile.am (modules): compile new modules gnu/gnunet/netstruct/procedural.scm and gnu/gnunet/netstruct/syntactic.scm. * README.org (Network Structures): document new modules. * gnu/gnunet/crypto/struct.scm: use new module. * gnu/gnunet/hashcode/struct.scm: likewise. * gnu/gnunet/nse/struct.scm: likewise. * gnu/gnunet/util/struct.scm: likewise. * gnu/gnunet/netstruct/procedural.scm: new module for defining and using network structures procedurally. * gnu/gnunet/netstruct/syntactic.scm: likewise, but syntactically and with some inlining.
* Define various common network structuresMaxime Devos2021-09-21
TODO: the struct.go files are rather large, a more instruction-efficient mechanism is in order. * gnu/gnunet/crypto/struct.scm: new module. * gnu/gnunet/hashcode/struct.scm: new module. * gnu/gnunet/util/struct.scm: new module.