MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / decode_value

Method decode_value

nodedb-codec/src/gorilla.rs:267–291  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

265 }
266
267 fn decode_value(&mut self) -> Result<u64, CodecError> {
268 let bit = self.reader.read_bit()?;
269 if !bit {
270 return Ok(self.prev_value);
271 }
272
273 let bit2 = self.reader.read_bit()?;
274 let xor = if !bit2 {
275 let meaningful_bits = 64 - self.prev_leading - self.prev_trailing;
276 let bits = self.reader.read_bits(meaningful_bits as usize)?;
277 bits << self.prev_trailing
278 } else {
279 let leading = self.reader.read_bits(6)? as u8;
280 let meaningful_bits = self.reader.read_bits(6)? as u8 + 1;
281 let trailing = 64 - leading - meaningful_bits;
282 let bits = self.reader.read_bits(meaningful_bits as usize)?;
283 self.prev_leading = leading;
284 self.prev_trailing = trailing;
285 bits << trailing
286 };
287
288 let val = self.prev_value ^ xor;
289 self.prev_value = val;
290 Ok(val)
291 }
292
293 /// Decode all remaining samples.
294 pub fn decode_all(&mut self) -> Vec<(i64, f64)> {

Callers 1

next_sampleMethod · 0.80

Calls 2

read_bitMethod · 0.80
read_bitsMethod · 0.80

Tested by

no test coverage detected