|
|
|
@ -274,37 +274,6 @@ impl super::Store for FSStore { |
|
|
|
|
Box::pin(future::ready(res)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn all_descrs(&self) -> Result<Vec<origin::Descr>, origin::AllDescrsError> { |
|
|
|
|
fs::read_dir(&self.dir_path).or_unexpected()?.map( |
|
|
|
|
|dir_entry_res: io::Result<fs::DirEntry>| -> Result<origin::Descr, origin::AllDescrsError> { |
|
|
|
|
let descr_id: String = dir_entry_res |
|
|
|
|
.or_unexpected()? |
|
|
|
|
.file_name() |
|
|
|
|
.to_str() |
|
|
|
|
.ok_or_else(|| { |
|
|
|
|
unexpected::Error::from("couldn't convert os string to &str") |
|
|
|
|
})? |
|
|
|
|
.into(); |
|
|
|
|
|
|
|
|
|
let descr_file_path = self.descr_file_path(descr_id.as_ref()); |
|
|
|
|
|
|
|
|
|
// TODO it's possible that opening the file will fail if syncing is
|
|
|
|
|
// still ongoing, as writing the descr file is the last step after
|
|
|
|
|
// initial sync has succeeded.
|
|
|
|
|
let descr_file = fs::File::open(descr_file_path.as_path()) |
|
|
|
|
.map_unexpected_while(|| { |
|
|
|
|
format!("opening descr file {}", descr_file_path.display()) |
|
|
|
|
})?; |
|
|
|
|
|
|
|
|
|
let descr = serde_json::from_reader(descr_file).map_unexpected_while(|| { |
|
|
|
|
format!("reading descr file {}", descr_file_path.display()) |
|
|
|
|
})?; |
|
|
|
|
|
|
|
|
|
Ok(descr) |
|
|
|
|
}, |
|
|
|
|
).try_collect() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fn get_file( |
|
|
|
|
&self, |
|
|
|
|
descr: &origin::Descr, |
|
|
|
|