+pub(crate) fn read_channelmonitors(
+ path: String, keys_manager: Arc<KeysManager>,
+) -> Result<HashMap<OutPoint, (BlockHash, ChannelMonitor<InMemorySigner>)>, std::io::Error> {
+ if !Path::new(&path).exists() {
+ return Ok(HashMap::new());
+ }
+ let mut outpoint_to_channelmonitor = HashMap::new();
+ for file_option in fs::read_dir(path).unwrap() {
+ let file = file_option.unwrap();
+ let owned_file_name = file.file_name();
+ let filename = owned_file_name.to_str();
+ if !filename.is_some() || !filename.unwrap().is_ascii() || filename.unwrap().len() < 65 {
+ return Err(std::io::Error::new(
+ std::io::ErrorKind::Other,
+ "Invalid ChannelMonitor file name",
+ ));
+ }