rustybit_lib/storage/
mod.rs1mod 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}