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