Torrent downloader or leecher.
pronounced as TOZ-ee
tozi download|continue|verify|info ./path/to/file.torrent|magnet link
zig build
- learn kqueue, torrent proto and zig
- replace motrix
- fast
- mine (?)
- there is no
seedingcapability, because almost nobody would have a server that is available to the public web. This means nobody can connect to you (unless you messed with your network setup, which I didn't do). - there is no linux support, because I didn't write
epollwrapper and I didn't use pre-built libraries. file read/writes are "blocking". I think i will change this with zigFile and hashing are now done in separate threads. It turned out to be easier than i expected. Also discovered new thing0.16.0. But to be honest, I didn't find it to be a bottleneck, because usually the network is saturated first.std.posix.pipefor threads communications. It integrated nicely with kqueue.- udp tracker support. Learned that udp is also quite cool, because you receive either whole packet or nothing, which is perfect for torrent tracker.
- BEP-003: Core protocol (I'm not entierly sure this is 100% compliant, but it still downloads torrents)
- BEP-006: Fast extension
- BEP-009: Extension for Metadata Files (TODO: add support for sending metadata messages)
- BEP-010: Extension Protocol
- BEP-011: Peer Exchange (PEX)
- BEP-012: Multiple trackers
- BEP-015: UDP Tracker Protocol for BitTorrent (TODO: add reties)
- BEP-020: Peer ID Conventions
- BEP-023: Tracker Returns Compact Peer Lists
- BEP-040: Canonical Peer Priority
- BEP-054: The lt_donthave extension