rustybit_lib/storage/
mod.rs

1mod file_storage;
2mod piece_hash_verifier;
3mod storage_manager;
4mod util;
5
6use std::net::SocketAddrV4;
7use std::path::PathBuf;
8
9use bittorrent_peer_protocol::Block;
10pub use file_storage::FileStorage;
11pub use piece_hash_verifier::PieceHashVerifier;
12pub use storage_manager::{StorageManager, TorrentFileMetadata};
13
14#[derive(Debug)]
15pub struct FileInfo {
16    pub path: PathBuf,
17    pub length: u64,
18}
19
20impl FileInfo {
21    pub fn new(path: PathBuf, length: u64) -> Self {
22        FileInfo { path, length }
23    }
24}
25
26pub enum StorageOp {
27    AddBlock(Block),
28    CheckPieceHash((SocketAddrV4, u32, [u8; 20])),
29}
30
31pub trait Storage: Send + Sync {
32    fn write_all(&mut self, file_idx: usize, offset: u64, data: &[u8]) -> anyhow::Result<()>;
33    fn read_exact(&mut self, file_idx: usize, offset: u64, buf: &mut [u8]) -> anyhow::Result<bool>;
34}