state: clean up SledState query impls
This commit is contained in:
parent
dace92aca1
commit
c8a97f94b2
|
|
@ -1,6 +1,6 @@
|
||||||
//! The primary implementation of the `zebra_state::Service` built upon sled
|
//! The primary implementation of the `zebra_state::Service` built upon sled
|
||||||
|
|
||||||
use std::{collections::HashMap, convert::TryInto, sync::Arc};
|
use std::{collections::HashMap, sync::Arc};
|
||||||
|
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
use zebra_chain::transparent;
|
use zebra_chain::transparent;
|
||||||
|
|
@ -13,7 +13,7 @@ use crate::{BoxError, Config, HashOrHeight, QueuedBlock};
|
||||||
|
|
||||||
mod sled_format;
|
mod sled_format;
|
||||||
|
|
||||||
use sled_format::{SledDeserialize, SledSerialize};
|
use sled_format::{FromSled, SledDeserialize, SledSerialize};
|
||||||
|
|
||||||
/// The finalized part of the chain state, stored in sled.
|
/// The finalized part of the chain state, stored in sled.
|
||||||
///
|
///
|
||||||
|
|
@ -294,9 +294,10 @@ impl FinalizedState {
|
||||||
|
|
||||||
let heights = crate::util::block_locator_heights(tip_height);
|
let heights = crate::util::block_locator_heights(tip_height);
|
||||||
let mut hashes = Vec::with_capacity(heights.len());
|
let mut hashes = Vec::with_capacity(heights.len());
|
||||||
|
|
||||||
for height in heights {
|
for height in heights {
|
||||||
if let Some(hash) = self.hash_by_height.zs_get(&height)? {
|
if let Some(hash) = self.hash_by_height.zs_get(&height)? {
|
||||||
hashes.push(hash)
|
hashes.push(hash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -304,15 +305,16 @@ impl FinalizedState {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn tip(&self) -> Result<Option<(block::Height, block::Hash)>, BoxError> {
|
pub fn tip(&self) -> Result<Option<(block::Height, block::Hash)>, BoxError> {
|
||||||
Ok(self.hash_by_height.iter().rev().next().transpose()?.map(
|
if let Some((height_bytes, hash_bytes)) =
|
||||||
|(height_bytes, hash_bytes)| {
|
self.hash_by_height.iter().rev().next().transpose()?
|
||||||
let height = block::Height(u32::from_be_bytes(
|
{
|
||||||
height_bytes.as_ref().try_into().unwrap(),
|
let height = block::Height::from_ivec(height_bytes)?;
|
||||||
));
|
let hash = block::Hash::from_ivec(hash_bytes)?;
|
||||||
let hash = block::Hash(hash_bytes.as_ref().try_into().unwrap());
|
|
||||||
(height, hash)
|
Ok(Some((height, hash)))
|
||||||
},
|
} else {
|
||||||
))
|
Ok(None)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn depth(&self, hash: block::Hash) -> Result<Option<u32>, BoxError> {
|
pub fn depth(&self, hash: block::Hash) -> Result<Option<u32>, BoxError> {
|
||||||
|
|
@ -335,10 +337,7 @@ impl FinalizedState {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
match self.block_by_height.zs_get(&height)? {
|
Ok(self.block_by_height.zs_get(&height)?)
|
||||||
Some(block) => Ok(Some(block)),
|
|
||||||
None => Ok(None),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the `transparent::Output` pointed to by the given
|
/// Returns the `transparent::Output` pointed to by the given
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue