1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
/// Type of file. /// /// `signatures`, `bitfield` and `tree` are the three SLEEP files. There are two ///additional files, `key`, and `data`, which do not contain SLEEP file headers ///and store plain serialized data for easy access. `key` stores the public key ///that is described by the `signatures` file, and `data` stores the raw chunk ///data that the `tree` file contains the hashes and metadata. #[derive(Debug, PartialEq)] pub enum FileType { /// The bitfield describes which pieces of data you have, and which nodes in /// the tree file have been written. This file exists as an index of the tree /// and data to quickly figure out which pieces of data you have or are /// missing. This file can be regenerated if you delete it, so it is /// considered a materialized index. BitField, /// A SLEEP formatted 32 byte header with data entries being 64 byte /// signatures. Signatures, /// A SLEEP formatted 32 byte header with data entries representing a /// serialized Merkle tree based on the data in the data storage layer. All /// the fixed size nodes written in in-order tree notation. The header /// algorithm string for `tree` files is `BLAKE2b`. The entry size is 40 /// bytes. Tree, } impl FileType { /// Returns true if the file is `BitField` #[inline] pub fn is_bitfield(&self) -> bool { *self == FileType::BitField } /// Returns true if the file is `Signatures` #[inline] pub fn is_signatures(&self) -> bool { *self == FileType::Signatures } /// Returns true if the file is `Tree` #[inline] pub fn is_tree(&self) -> bool { *self == FileType::Tree } }