Commit graph

39 commits

Author SHA1 Message Date
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
Trolli Schmittlauch 6958fc2f98 some tweaks to the demo UDP server 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 303a6ecbfa start prototyping a UDP socket server, ideas on UDP parsing
- start implementing a socket-based UDP server (cannot reply yet)
- some brainstorming about how to parse incoming UDP packet commands
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 76e7c60b96 bump nixpkgs version to include a fix for hoogle 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 6c7feb73c6 ignore .gitignored files for cabal2nix 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 6c90eb75b4 enable async and threading 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch ea6ebe590d adjust tests to new NodeState 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 0e33d442f9 EpiChord: create a stub cache-invariant checker
rough logic is implemented, but only for successors and not
predecessors.
Additionally it just returns empty IO actions instead of lookup
operations, until those are implemented.
part of #1

Untested!
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 88897ea741 generation of key IDs 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 8ece8646d4 fix some more warnings 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch b234c7ac4e more tests #2 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 9d20589cf8 fix some warnings 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 84a48e63c2 stub main executable file 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 3c981fbf86 implement NodeID generation + tests
contributes to #1 #2
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch b41acaf52a debugged computation bug in ByteString to UInteger conversion
likely caused by an overflow, but don't have time to investigate
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 2d05d0644d buggy prototype of bytestring to UInteger conversion 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 8ad247978a prototyping the NodeID creation hashing function
- misses conversion from ByteString to Integer
- uses unperformant Lazy ByteString builders + conversion to strict ones
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch f1a52ab0b8 re-structure Nix environment to make use of compiler and nixpkgs pinning 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 523c33482c tests for NodeID ordering and NodeState creation #2 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch bfde27cea6 restructure tests
contributes to #2
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 04b3a1f8b4 fix build of executable 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 57e759836c implement first actual test case with hspec and run it 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 21fef145a0 working project structure with tests
- restructured project again: splitting into executable and Hash2Pub
  library
- placeholder test file is successfully compiled and run
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 30cfed81ea restructure nix development environment, now with Hoogle 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 6329f815d1 Initial packaging as a Cabal package, in preparation for #2
- also restructures shell.nix to parse cabal file instead of directly
  specifying dependencies
2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 3b3ee09575 fix Haddock documentation, contrinutes to #8 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 08932cf80a selectively export only needed constructors 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 4a89ffe25a improve documentation, contributes to #8 2020-05-17 21:31:43 +02:00
Trolli Schmittlauch 3f9452ab7e choose and implement data structures for node state and cache 2020-02-27 22:10:57 +01:00
Trolli Schmittlauch ce4cc385b8 rename whole project and make DHT implementation as a project specific module 2020-02-26 14:11:33 +01:00
Trolli Schmittlauch 6c5faa4fc6 rename DHT implementation as it deviates from the EpiChord paper 2020-02-24 22:56:03 +01:00
Trolli Schmittlauch e83710f10b Start implementing the Epichord DHT: NodeID type 2020-02-24 21:53:47 +01:00