Reads prop_metadata from the prop file @NOTE: Right now, every call reads from the prop file, there's no caching implemented
(
&self,
offset: FileOffset,
length: BytesToRead,
)
| 144 | /// no caching implemented |
| 145 | /// |
| 146 | pub fn get_prop_metadata( |
| 147 | &self, |
| 148 | offset: FileOffset, |
| 149 | length: BytesToRead, |
| 150 | ) -> Result<Arc<NodePropMetadata>, BufIoError> { |
| 151 | let key = Self::get_prop_key(offset, length); |
| 152 | if let Some(metadata) = self |
| 153 | .metadata_registry |
| 154 | .get(&key) |
| 155 | .and_then(|metadata| metadata.upgrade()) |
| 156 | { |
| 157 | return Ok(metadata); |
| 158 | } |
| 159 | |
| 160 | let mut prop_file_guard = self.prop_file.write().unwrap(); |
| 161 | let metadata = Arc::new(read_prop_metadata_from_file( |
| 162 | (offset, length), |
| 163 | &mut prop_file_guard, |
| 164 | )?); |
| 165 | drop(prop_file_guard); |
| 166 | let weak = Arc::downgrade(&metadata); |
| 167 | self.metadata_registry.insert(key, weak); |
| 168 | Ok(metadata) |
| 169 | } |
| 170 | |
| 171 | #[allow(clippy::not_unsafe_ptr_arg_deref)] |
| 172 | pub fn insert_lazy_object(&self, item: SharedNode) { |
no test coverage detected