(
&self,
offset: FileOffset,
length: BytesToRead,
)
| 115 | } |
| 116 | |
| 117 | pub fn get_prop( |
| 118 | &self, |
| 119 | offset: FileOffset, |
| 120 | length: BytesToRead, |
| 121 | ) -> Result<Arc<NodePropValue>, BufIoError> { |
| 122 | let key = Self::get_prop_key(offset, length); |
| 123 | if let Some(prop) = self |
| 124 | .props_registry |
| 125 | .get(&key) |
| 126 | .and_then(|prop| prop.upgrade()) |
| 127 | { |
| 128 | return Ok(prop); |
| 129 | } |
| 130 | let mut prop_file_guard = self.prop_file.write().unwrap(); |
| 131 | let prop = Arc::new(read_prop_value_from_file( |
| 132 | (offset, length), |
| 133 | &mut prop_file_guard, |
| 134 | )?); |
| 135 | drop(prop_file_guard); |
| 136 | let weak = Arc::downgrade(&prop); |
| 137 | self.props_registry.insert(key, weak); |
| 138 | Ok(prop) |
| 139 | } |
| 140 | |
| 141 | /// Reads prop_metadata from the prop file |
| 142 | /// |
no test coverage detected