rust/hg-core/src/dirstate_tree/dirstate_map.rs
changeset 49913 c15b415d1bff
parent 49373 f8ec7b16c98f
child 49921 5fff90c7ea9d
equal deleted inserted replaced
49912:bc83ebe07bf0 49913:c15b415d1bff
     1 use bytes_cast::BytesCast;
     1 use bytes_cast::BytesCast;
     2 use micro_timer::timed;
       
     3 use std::borrow::Cow;
     2 use std::borrow::Cow;
     4 use std::path::PathBuf;
     3 use std::path::PathBuf;
     5 
     4 
     6 use super::on_disk;
     5 use super::on_disk;
     7 use super::on_disk::DirstateV2ParseError;
     6 use super::on_disk::DirstateV2ParseError;
   452             old_data_size: 0,
   451             old_data_size: 0,
   453             dirstate_version: DirstateVersion::V1,
   452             dirstate_version: DirstateVersion::V1,
   454         }
   453         }
   455     }
   454     }
   456 
   455 
   457     #[timed]
   456     #[logging_timer::time("trace")]
   458     pub fn new_v2(
   457     pub fn new_v2(
   459         on_disk: &'on_disk [u8],
   458         on_disk: &'on_disk [u8],
   460         data_size: usize,
   459         data_size: usize,
   461         metadata: &[u8],
   460         metadata: &[u8],
   462     ) -> Result<Self, DirstateError> {
   461     ) -> Result<Self, DirstateError> {
   465         } else {
   464         } else {
   466             Err(DirstateV2ParseError::new("not enough bytes on disk").into())
   465             Err(DirstateV2ParseError::new("not enough bytes on disk").into())
   467         }
   466         }
   468     }
   467     }
   469 
   468 
   470     #[timed]
   469     #[logging_timer::time("trace")]
   471     pub fn new_v1(
   470     pub fn new_v1(
   472         on_disk: &'on_disk [u8],
   471         on_disk: &'on_disk [u8],
   473     ) -> Result<(Self, Option<DirstateParents>), DirstateError> {
   472     ) -> Result<(Self, Option<DirstateParents>), DirstateError> {
   474         let mut map = Self::empty(on_disk);
   473         let mut map = Self::empty(on_disk);
   475         if map.on_disk.is_empty() {
   474         if map.on_disk.is_empty() {
  1206                 Ok(false)
  1205                 Ok(false)
  1207             }
  1206             }
  1208         })
  1207         })
  1209     }
  1208     }
  1210 
  1209 
  1211     #[timed]
  1210     #[logging_timer::time("trace")]
  1212     pub fn pack_v1(
  1211     pub fn pack_v1(
  1213         &self,
  1212         &self,
  1214         parents: DirstateParents,
  1213         parents: DirstateParents,
  1215     ) -> Result<Vec<u8>, DirstateError> {
  1214     ) -> Result<Vec<u8>, DirstateError> {
  1216         let map = self.get_map();
  1215         let map = self.get_map();
  1246 
  1245 
  1247     /// Returns new data and metadata together with whether that data should be
  1246     /// Returns new data and metadata together with whether that data should be
  1248     /// appended to the existing data file whose content is at
  1247     /// appended to the existing data file whose content is at
  1249     /// `map.on_disk` (true), instead of written to a new data file
  1248     /// `map.on_disk` (true), instead of written to a new data file
  1250     /// (false), and the previous size of data on disk.
  1249     /// (false), and the previous size of data on disk.
  1251     #[timed]
  1250     #[logging_timer::time("trace")]
  1252     pub fn pack_v2(
  1251     pub fn pack_v2(
  1253         &self,
  1252         &self,
  1254         can_append: bool,
  1253         can_append: bool,
  1255     ) -> Result<(Vec<u8>, on_disk::TreeMetadata, bool, usize), DirstateError>
  1254     ) -> Result<(Vec<u8>, on_disk::TreeMetadata, bool, usize), DirstateError>
  1256     {
  1255     {