Commit graph

249 commits

Author SHA1 Message Date
Trolli Schmittlauch fe673dc255 make NodeState a typeclasse, define setters and getters on its representations
contributes to #20
2020-05-21 23:40:10 +02:00
Trolli Schmittlauch 99a2b0ba09 add instance deriving instructions 2020-05-20 19:27:51 +02:00
Trolli Schmittlauch f6c252d314 sending a queryID request compiles (untested) 2020-05-20 18:55:24 +02:00
Trolli Schmittlauch beffab99a0 clarify counting of FediChordMessage parts 2020-05-19 19:50:36 +02:00
Trolli Schmittlauch c31baa3635 run stylish 2020-05-19 17:55:40 +02:00
Trolli Schmittlauch 8d18f952cd implement send-receive-acknowledge-retry loop for requests 2020-05-19 17:53:13 +02:00
Trolli Schmittlauch 0e6f126b3b Merge branch 'master' into dhtNetworking 2020-05-19 16:51:43 +02:00
Trolli Schmittlauch b8eeb852da Merge pull request 'Linting integration' (#17) from Hecate/Hash2Pub:hlint-configuration into master
Introduce some code formatting guidelines and enforce them with hlint and stylish:

- End-of-line extra spaces removal;
- Import lines ordering;
- Redundant ($) removal;
- Generalisation of (++) and map to (<>) and fmap;
- Preferring pure over return;
- Removing extraenous extensions.
2020-05-19 16:35:59 +02:00
Trolli Schmittlauch 7fd369c8c5 add stylish as haskell linter 2020-05-19 16:33:00 +02:00
Trolli Schmittlauch 84bcd676ae move protocol data definitions to own module to prevent cyclic imports 2020-05-19 16:30:56 +02:00
Hécate 41e999ed99 Linting integration
This commit brings in an HLint configuration file
and several recommended modifications such as:

* End-of-line extra spaces removal;
* Import lines ordering;
* Redundant $ removal;
* Generalisation of ++ and map to <> and fmap;
* Preferring `pure` over `return`;
* Removing extraenous extensions.

And finally, a `stylish-haskell` helper script
that detects if code files are dirty. Can be useful for CI,
although manually calling it can be nice if you would rather
first implement then beautify.
2020-05-19 12:42:06 +02:00
Trolli Schmittlauch d049b65f1e add readme 2020-05-19 00:01:32 +02:00
Trolli Schmittlauch 60c164dbb0 remove unnecessary directory level 2020-05-19 00:01:32 +02:00
Trolli Schmittlauch 4e62bb08f8 add readme 2020-05-18 23:59:44 +02:00
Trolli Schmittlauch fdd4efe269 fixed tests 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 8b01ad2f37 remove unnecessary directory level 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch a30a221477 more test fixes 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch b8be20b86e begin implementation of message sending 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 895606d542 make tests compile again (do not pass yet) 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch c304e2103f allow messages without payload for ACKing 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 2b234d65db prepare sending of queryID messages 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch ff1e530a26 function for updating CacheEntry timestamp and mark as verified 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch f5d0777cc4 writer thread for processing all cache modification through a queue 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 5810c14b26 encapsulate NodeCache into IORef and initilise queue for writes 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 0682bf4bad create local server socket 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 906cdc67c3 initialise own node state, preliminary config passing 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch 1e870d1b13 clarify size of vserverID 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch a2fb664c4f switch back to pinned NixOS 20.03 stable branch for environment 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch ec869593f6 notes about message length and MTUs 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch e5db06a680 move limit of message parts to a global constant 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 6ed441403d basic test for whether message splitting works 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch ca383420a6 fix off-by-one error in message splitting 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 0d91452641 add tests for serialising and deserialising messages 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 666a9602ba adjust tests to usage of RemoteCacheEntry 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch e4d350b8fb add tests for ASN.1 message encoding and decoding 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 89cc51af52 re-organise protocol definition and create own type for remote cache entries 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 91bb72cb57 fix ASN.1 container parsing 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 2f10ea6628 fix parser format inconsistencies 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 28254a9f83 better error handling in ASN.1 message parser 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 6dc9650da5 deserialisation of DHT messages 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch c9654d66d6 improve encoding documentation and syntax 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 31b73b7667 split FediChord messages into multiple parts for size restrictions
includes encoding of messages as ASN.1 DER
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 1d8d9a33fd implement ASN.1 parsing with parser combinators 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 9f16964efc define data types for DHT messaging
encoding and parsing functions have been adjusted accordingly
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch e81a4d23e7 make request and response distinguishable 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 187d164200 encode Ping as ASN.1 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 1968b5f883 functions for encoding protocol messages as ASN.1 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 947771ba18 add publicsuffix dependency for proper node ID hashing
still needs to be implemented
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch db229975b0 extract internal node parameters to own arithmetic type 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 24936d48c1 ASN.1 module schema specification for DHT protocol 2020-05-17 21:31:43 +02:00