30 Commits

Author SHA1 Message Date
epiphany
94dc672a15 geode, fud: replace smol::fs::File with std::fs::File, add Chunk struct 2026-01-01 20:20:25 +00:00
x
9785777642 chore: Update copyright license year
Happy 2026!
2026-01-01 11:40:45 +00:00
jkds
cc571d4851 remove all () from the ends of log targets: foo::bar() => foo::bar 2025-12-30 12:09:29 +01:00
oars
d85cf80dbf replace log imports with tracing everywhere 2025-11-07 10:15:36 +03:00
epiphany
e349827b3b geode: fix insert_metadata() info log 2025-09-15 14:27:27 +02:00
epiphany
6e9e1f3084 fud, geode: track downloaded bytes and download speed, add eta, improve scraps 2025-07-30 17:10:23 +02:00
epiphany
ba84e53254 fud, fu, geode: allow downloading a subset of files from a directory
This also introduces "scraps" in the sled database, which are chunks that contains both data the user wants and data the user does not want. Those chunks happen because files (in fud directories) are not aligned with chunks, so they can contain the data of multiple files.

After you download a chunk, fud checks that all bytes of it was written to the filesystem, if not that chunk will be saved as a scrap in sled. It's useful for a few things:

1. You don't download that chunk again later
2. You can still verify integrity, even if you did not write the full chunk into your downloaded files
3. You can seed that chunk (once partial seeding is implemented, which is currently not the case)

They are automatically removed from sled once they are not needed anymore (the fud resource is removed, or the chunk was rewritten to the filesystem, and this time it was fully written).

Those scraps are a concept in fud, not in geode.
2025-07-17 10:06:01 +03:00
skoupidi
99fad7773c src|tests|example: chore clippy 2025-06-28 17:13:23 +03:00
epiphany
c05a5ce085 geode: handle read_chunk() error in verify_chunks() 2025-06-27 18:47:45 +02:00
epiphany
6be822c35b fud, geode: add support for directories, update get default path, improve chunk verification 2025-06-14 10:17:05 +02:00
epiphany
7f4d168884 fud: add lib target, cleanups 2025-05-25 15:10:40 +02:00
epiphany
55e08ae605 fud, geode: chunks are written and fetched from the full file 2025-05-18 19:14:38 +02:00
darkfi
ff112dd6c2 fud: add resource.rs, add fu watch, add fu rm, merge announcing task and pruning task 2025-04-11 16:03:17 +00:00
darkfi
8244870639 fud, fu: subscribe rpc method, add FudEvent::DownloadStarted and FudEvent::DownloadError, get improvements 2025-04-11 16:03:17 +00:00
darkfi
8fac16466d geode: replace hex with bs58 in comments 2025-04-11 16:03:17 +00:00
darkfi
f630e1cd7c fud: remove chunk seeders, change file hash, replace hex with bs58 2025-04-11 16:03:17 +00:00
darkfi
aae5651501 fud, fu: autoseed, get rpc subscriber, progress bar, bug fixes 2025-04-11 16:03:17 +00:00
darkfi
058faffa75 fud: add dht lookups & improvements 2025-04-11 16:03:17 +00:00
darkfi
e219954da2 fud, fu, geode: fixes & improvements 2025-04-11 16:03:17 +00:00
parazyd
604f443fd1 chore: Update license header year 2025-01-24 10:36:02 +01:00
skoupidi
6a39547118 chore: clippy too_long_first_doc_paragraph fixed almost everywhere 2024-08-29 17:10:13 +03:00
nighthawk24
c25df52c64 fud | lilith | research/dhtd/ | geode | tests : Refactor to return match statements 2024-02-23 15:29:25 +02:00
parazyd
0e6f51e895 chore: Update copyright year in license headers 2024-01-16 13:07:22 +01:00
parazyd
a02e3475f6 lib: Remove async-std dependency. 2023-08-22 19:55:37 +02:00
parazyd
0ba9740b84 chore: Clippy lints 2023-08-17 12:03:11 +02:00
parazyd
688da857a8 fud: Implement background tasks for fetching file metadata and file chunks. 2023-07-31 15:50:50 +02:00
parazyd
37929b8545 geode: Return GeodeFileNotFound if file is not found. 2023-07-31 15:50:50 +02:00
parazyd
63a408c777 fud/proto: Implement chunk request handler. 2023-07-29 12:57:57 +02:00
parazyd
acc9453cfa fud: Fresh impl with routing 2023-07-29 11:46:24 +02:00
parazyd
70321d6aa9 geode: Implement basic chunk-based interface. 2023-07-29 11:46:24 +02:00