Trolli Schmittlauch
0660bce299
acknowledge parts when receiving partial requests
2020-05-31 23:21:55 +02:00
Trolli Schmittlauch
88104de9bf
periodically purge request parts
2020-05-31 21:07:40 +02:00
Trolli Schmittlauch
bcd1c34c7c
manage incoming request parts before handling
2020-05-31 01:14:09 +02:00
Trolli Schmittlauch
2542091379
adjust rest of code to new message structure
2020-05-30 13:52:06 +02:00
Trolli Schmittlauch
f8d444d5b6
FediChordMessage: last part has falg instead of parts number in each msg
...
Motivation: Including the number of parts in each message part requires
the total number of parts to be known in advance, making dynamic
responses based on the received data difficult
2020-05-30 13:07:28 +02:00
Trolli Schmittlauch
fea9660f80
WIP: start implementing incoming request handling
2020-05-30 01:10:56 +02:00
Trolli Schmittlauch
61818c58a9
main server thread structure
2020-05-29 17:39:35 +02:00
Trolli Schmittlauch
b4ecf8b0aa
catch and handle more join errors
2020-05-27 23:37:32 +02:00
Trolli Schmittlauch
6ff765c63e
catch and handle bootstrap join errors
2020-05-27 18:59:38 +02:00
Trolli Schmittlauch
27e5c5f9ce
bracket all socket-using operations to avoid resource leakage
2020-05-27 18:08:46 +02:00
Trolli Schmittlauch
b1c5c5e5f4
try all bootstrap nodes until successfully joined
2020-05-26 20:54:02 +02:00
Trolli Schmittlauch
702684b1a9
split fediChordJoin into general purpose and bootstrapping part
2020-05-26 11:02:29 +02:00
Trolli Schmittlauch
43eb04dfea
preliminary passing of bootstrap nodes in Main to fediChordJoin
2020-05-26 09:39:02 +02:00
Trolli Schmittlauch
ad1465c5fe
use global cache adding function
2020-05-26 08:55:44 +02:00
Trolli Schmittlauch
e3bfa26ddb
join request + large FediChord refactoring
...
- implement sending of initial join request sending, response parsing
and cache population (untested but compiles)
- refactor basic types and their functions into Hash2Pub.FediChordTypes
to prevent import loops, leaving Hash2Pub.FediChord to contain the
high level actions called from Main
2020-05-25 22:03:24 +02:00
Trolli Schmittlauch
d5841d13fd
extract queryID message sending function so it can be used for first join
2020-05-22 22:12:38 +02:00
Trolli Schmittlauch
e8091b0a29
change all function definitions to new NodeState types
...
- adjust implementation
contributes to #20
2020-05-21 23:48:36 +02:00
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
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
60c164dbb0
remove unnecessary directory level
2020-05-19 00:01:32 +02:00
Trolli Schmittlauch
8b01ad2f37
remove unnecessary directory level
2020-05-17 21:31:44 +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