| 122 | } |
| 123 | |
| 124 | async fn enumerate(&self) -> io::Result<DriveFiles> { |
| 125 | let mut entries = BTreeMap::new(); |
| 126 | let mut bytes = 0; |
| 127 | for (name, (metadata, content)) in self.demos.iter() { |
| 128 | entries.insert(name.to_string(), metadata.clone()); |
| 129 | bytes += content.len(); |
| 130 | } |
| 131 | let files = self.demos.len(); |
| 132 | |
| 133 | let disk_quota = if bytes <= u64::MAX as usize && files <= u64::MAX as usize { |
| 134 | Some(DiskSpace::new(bytes as u64, files as u64)) |
| 135 | } else { |
| 136 | // Cannot represent the amount of disk within a DiskSpace. |
| 137 | None |
| 138 | }; |
| 139 | let disk_free = Some(DiskSpace::new(0, 0)); |
| 140 | |
| 141 | Ok(DriveFiles::new(entries, disk_quota, disk_free)) |
| 142 | } |
| 143 | |
| 144 | async fn get(&self, name: &str) -> io::Result<Vec<u8>> { |
| 145 | let uc_name = name.to_ascii_uppercase(); |