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
Trolli Schmittlauch
aed80263a7
NodeCache: add entries
...
+ tests
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch
8d9697c1ef
local cache query lookup + some validation considerations
...
no unit tests done so far
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch
e13dac4ded
IPv6 only, noone needs legacy stuff
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch
3faa4a8d61
specify protocol operations and affected data
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch
357152da46
prototype of server and client successfully communicating via unconnected Datagram sockets
2020-05-17 21:31:43 +02:00