Commit graph

86 commits

Author SHA1 Message Date
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 fdd4efe269 fixed tests 2020-05-17 21:31:44 +02:00
Trolli Schmittlauch a30a221477 more test fixes 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
Trolli Schmittlauch e1228da74d start specifying protocol format in ASN.1 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 7a20ea5225 more complex prototype example of modular parsing 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 7e6c4985ce some prototyping and fiddling around with ASN.1 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 992320b67b example for encoding data as ASN1 DER 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 449fcb93bb safe responsibility recognisation, tests for responsibility lookup 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch bba14f6be3 add tests for entry deletion from cache 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch c1f8ec2c56 write tests for (local) cache lookup on queries
#2
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 66be1cc2b6 make local lookup return Sets instead of lists 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 90daa1ba9a NodeCache: write tests for lookup (#2) 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch a803751213 fix infinite loops during lookups 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 18bdcce266 re-implement NodeCache data structure to emulate ring properly
- previously, there was at least 1 gap in the identifier ring
- now use normal integer comparison again, but forward lookups using
  proxy entries at the ID space boundaries
- wrap cache operations to properly handle proxy elements
- fix all previously working tests
- document choice of cache data structure
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 3db7fcfba5 found an edge case where a Data.Map tree map does not work properly for retrieving a successor.
Need to find a better data structure
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch f4847da295 fix types and packaging to make inserting testable 2020-05-17 21:31:43 +02:00