0e6f126b3b
Merge branch 'master' into dhtNetworking
2020-05-19 16:51:43 +02:00
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
7fd369c8c5
add stylish as haskell linter
2020-05-19 16:33:00 +02:00
84bcd676ae
move protocol data definitions to own module to prevent cyclic imports
2020-05-19 16:30:56 +02:00
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
d049b65f1e
add readme
2020-05-19 00:01:32 +02:00
60c164dbb0
remove unnecessary directory level
2020-05-19 00:01:32 +02:00
4e62bb08f8
add readme
2020-05-18 23:59:44 +02:00
fdd4efe269
fixed tests
2020-05-17 21:31:44 +02:00
8b01ad2f37
remove unnecessary directory level
2020-05-17 21:31:44 +02:00
a30a221477
more test fixes
2020-05-17 21:31:44 +02:00
b8be20b86e
begin implementation of message sending
2020-05-17 21:31:44 +02:00
895606d542
make tests compile again (do not pass yet)
2020-05-17 21:31:44 +02:00
c304e2103f
allow messages without payload for ACKing
2020-05-17 21:31:44 +02:00
2b234d65db
prepare sending of queryID messages
2020-05-17 21:31:44 +02:00
ff1e530a26
function for updating CacheEntry timestamp and mark as verified
2020-05-17 21:31:44 +02:00
f5d0777cc4
writer thread for processing all cache modification through a queue
2020-05-17 21:31:44 +02:00
5810c14b26
encapsulate NodeCache into IORef and initilise queue for writes
2020-05-17 21:31:44 +02:00
0682bf4bad
create local server socket
2020-05-17 21:31:44 +02:00
906cdc67c3
initialise own node state, preliminary config passing
2020-05-17 21:31:44 +02:00
1e870d1b13
clarify size of vserverID
2020-05-17 21:31:43 +02:00
a2fb664c4f
switch back to pinned NixOS 20.03 stable branch for environment
2020-05-17 21:31:43 +02:00
ec869593f6
notes about message length and MTUs
2020-05-17 21:31:43 +02:00
e5db06a680
move limit of message parts to a global constant
2020-05-17 21:31:43 +02:00
6ed441403d
basic test for whether message splitting works
2020-05-17 21:31:43 +02:00
ca383420a6
fix off-by-one error in message splitting
2020-05-17 21:31:43 +02:00
0d91452641
add tests for serialising and deserialising messages
2020-05-17 21:31:43 +02:00
666a9602ba
adjust tests to usage of RemoteCacheEntry
2020-05-17 21:31:43 +02:00
e4d350b8fb
add tests for ASN.1 message encoding and decoding
2020-05-17 21:31:43 +02:00
89cc51af52
re-organise protocol definition and create own type for remote cache entries
2020-05-17 21:31:43 +02:00
91bb72cb57
fix ASN.1 container parsing
2020-05-17 21:31:43 +02:00
2f10ea6628
fix parser format inconsistencies
2020-05-17 21:31:43 +02:00
28254a9f83
better error handling in ASN.1 message parser
2020-05-17 21:31:43 +02:00
6dc9650da5
deserialisation of DHT messages
2020-05-17 21:31:43 +02:00
c9654d66d6
improve encoding documentation and syntax
2020-05-17 21:31:43 +02:00
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
1d8d9a33fd
implement ASN.1 parsing with parser combinators
2020-05-17 21:31:43 +02:00
9f16964efc
define data types for DHT messaging
...
encoding and parsing functions have been adjusted accordingly
2020-05-17 21:31:43 +02:00
e81a4d23e7
make request and response distinguishable
2020-05-17 21:31:43 +02:00
187d164200
encode Ping as ASN.1
2020-05-17 21:31:43 +02:00
1968b5f883
functions for encoding protocol messages as ASN.1
2020-05-17 21:31:43 +02:00
947771ba18
add publicsuffix dependency for proper node ID hashing
...
still needs to be implemented
2020-05-17 21:31:43 +02:00
db229975b0
extract internal node parameters to own arithmetic type
2020-05-17 21:31:43 +02:00
24936d48c1
ASN.1 module schema specification for DHT protocol
2020-05-17 21:31:43 +02:00
e1228da74d
start specifying protocol format in ASN.1
2020-05-17 21:31:43 +02:00
7a20ea5225
more complex prototype example of modular parsing
2020-05-17 21:31:43 +02:00
7e6c4985ce
some prototyping and fiddling around with ASN.1
2020-05-17 21:31:43 +02:00
992320b67b
example for encoding data as ASN1 DER
2020-05-17 21:31:43 +02:00
449fcb93bb
safe responsibility recognisation, tests for responsibility lookup
2020-05-17 21:31:43 +02:00
bba14f6be3
add tests for entry deletion from cache
2020-05-17 21:31:43 +02:00