Alexis Sellier
2a1154ef87
Re-work git transports
...
The changes in this commit are all intertwined and it was hard to
split them into smaller commits:
* Use custom transports everywhere
Instead of `file://` and instead of using a child process for fetching
and pushing; we go through our custom transports, which use the `rad://`
and `heartwood://` schemes.
* Introduce a 'mock' remote transport
To test the remote transport without needing to spawn TCP streams,
we add a mock transport that works between storages on the file
system.
* Get rid of node's `git-url`
Instead of git urls, nodes simply use their node-ids to replicate.
2022-10-26 21:40:19 +02:00
Slack Coder
10d8519101
node: improve ping/pong tests
...
Signed-off-by: Slack Coder <slackcoder@server.ky>
2022-10-18 17:23:31 +02:00
Alexis Sellier
09c438f8fb
Remove `Envelope` type
...
This type that was wrapping `Message` isn't very useful here.
If we decide that we do need something like that, it's best handled one
layer below.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 16:45:10 +02:00
Alexis Sellier
156a3a576a
Enforce max size for `Message` type on wire
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 15:44:06 +02:00
Alexis Sellier
ae95b229f5
Activate lint for dead-code checking
...
For test code, we need it in a couple of places.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:03:34 +02:00
Alexis Sellier
2499317589
Implement `Handle::listening`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-18 13:00:50 +02:00
Slack Coder
14690d1951
Service: drop unresponsive peers
...
Use pings to check connection health with network peers and drop them if
they prove unresponsive.
Signed-off-by: Slack Coder <slackcoder@server.ky>
2022-10-17 10:22:43 -05:00
Alexis Sellier
7936ba8773
node: use consistent terminology for tests
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 18:55:30 +02:00
Alexis Sellier
d9517cc966
node: add more tests for refs relay
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 18:51:53 +02:00
Alexis Sellier
7c45971998
node: handle announcement relay correctly
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-14 13:09:06 +02:00
Alexis Sellier
07add86bb6
node: Handle node announcements
...
To build an address book, peers communicate via gossip, sending
`NodeAnnouncement` messages.
These need to be handled by storing the addresses in an address book
and the addresses need to be persisted to disk.
Node announcement messages should also be relayed to peers like other
gossip messages.
2022-10-14 11:58:17 +02:00
Alexis Sellier
832c6ad53f
Improve error handling in a few places
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-10 11:29:22 +02:00
Alexis Sellier
e909e04c6c
Implement proper `node::Features` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-07 22:49:58 +02:00
Alexis Sellier
2d52a53ce5
Add variable bloom filter sizes
...
This should help small nodes waste less bandwidth, while standardizing
on set sizes.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-05 15:58:34 +02:00
Alexis Sellier
85ac8a1d4d
Implement routing table persistence
...
Uses SQLite for persistence.
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-05 12:13:12 +02:00
Alexis Sellier
15f525299e
Add commnads to query internal service state
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-10-04 21:07:57 +02:00
Alexis Sellier
af06ad6451
Use message timestamp for filtering
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-29 10:48:41 +02:00
Alexis Sellier
e35ec2f715
Rebroadcast logic for stored gossip messages
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-29 10:02:52 +02:00
Slack Coder
f9ad3ac155
git: Use RefString types for git::refs
...
Lean on rust's type system to improve safety.
Signed-off-by: Slack Coder <slackcoder@server.ky>
2022-09-28 16:11:03 -05:00
Alexis Sellier
27e39c0df5
Make `Id` a `Copy`
2022-09-27 14:13:20 +02:00
Alexis Sellier
8605946703
node: Add CLI options
2022-09-26 11:25:20 +02:00
Alexis Sellier
fcb1007f9d
Refactor service
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-23 15:43:55 +02:00
Alexis Sellier
7169881849
Remove peer timestamp
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 18:17:51 +02:00
Alexis Sellier
1fa85f0da3
Rename `Peer` to `Session`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 17:49:20 +02:00
Alexis Sellier
e382bc4eb9
Remove `Project` type
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 15:59:20 +02:00
Alexis Sellier
c2b599f068
Implement node handle to control node
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-22 12:36:12 +02:00
Alexis Sellier
46501507be
Split repository into two creates
...
* `radicle`: core library
* `radicle-node`: node
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-21 15:11:17 +02:00
Alexis Sellier
d1ccf1b807
node: Rename folder to `radicle-node`
...
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
2022-09-21 11:38:09 +02:00