[−][src]Struct grin_chain::store::Batch
An atomic batch in which all changes can be committed all at once or discarded on error.
Fields
db: Batch<'a>
The underlying db instance.
Implementations
impl<'a> Batch<'a>
[src]
pub fn head(&self) -> Result<Tip, Error>
[src]
The head.
pub fn tail(&self) -> Result<Tip, Error>
[src]
The tail.
pub fn header_head(&self) -> Result<Tip, Error>
[src]
The current header head (may differ from chain head).
pub fn head_header(&self) -> Result<BlockHeader, Error>
[src]
Header of the block at the head of the block chain (not the same thing as header_head).
pub fn save_body_head(&self, t: &Tip) -> Result<(), Error>
[src]
Save body head to db.
pub fn save_body_tail(&self, t: &Tip) -> Result<(), Error>
[src]
Save body "tail" to db.
pub fn save_header_head(&self, t: &Tip) -> Result<(), Error>
[src]
Save header head to db.
pub fn get_block(&self, h: &Hash) -> Result<Block, Error>
[src]
get block
pub fn block_exists(&self, h: &Hash) -> Result<bool, Error>
[src]
Does the block exist?
pub fn save_block(&self, b: &Block) -> Result<(), Error>
[src]
Save the block to the db. Note: the block header is not saved to the db here, assumes this has already been done.
pub fn save_spent_index(
&self,
h: &Hash,
spent: &[CommitPos]
) -> Result<(), Error>
[src]
&self,
h: &Hash,
spent: &[CommitPos]
) -> Result<(), Error>
We maintain a "spent" index for each full block to allow the output_pos to be easily reverted during rewind.
pub fn is_blocks_v3_migrated(&self) -> Result<bool, Error>
[src]
DB flag representing full migration of blocks to v3 version. Default to false if flag not present.
pub fn set_blocks_v3_migrated(&self, migrated: bool) -> Result<(), Error>
[src]
Set DB flag representing full migration of blocks to v3 version.
pub fn migrate_block(
&self,
key: &[u8],
from_version: ProtocolVersion,
to_version: ProtocolVersion
) -> Result<(), Error>
[src]
&self,
key: &[u8],
from_version: ProtocolVersion,
to_version: ProtocolVersion
) -> Result<(), Error>
Migrate a block stored in the db reading from one protocol version and writing with new protocol version.
pub fn delete(&self, key: &[u8]) -> Result<(), Error>
[src]
Low level function to delete directly by raw key.
pub fn delete_block(&self, bh: &Hash) -> Result<(), Error>
[src]
Delete a full block. Does not delete any record associated with a block header.
pub fn save_block_header(&self, header: &BlockHeader) -> Result<(), Error>
[src]
Save block header to db.
pub fn save_output_pos_height(
&self,
commit: &Commitment,
pos: CommitPos
) -> Result<(), Error>
[src]
&self,
commit: &Commitment,
pos: CommitPos
) -> Result<(), Error>
Save output_pos and block height to index.
pub fn delete_output_pos_height(&self, commit: &Commitment) -> Result<(), Error>
[src]
Delete the output_pos index entry for a spent output.
pub fn is_match_output_pos_key(&self, key: &[u8], commit: &Commitment) -> bool
[src]
When using the output_pos iterator we have access to the index keys but not the original commitment that the key is constructed from. So we need a way of comparing a key with another commitment without reconstructing the commitment from the key bytes.
pub fn output_pos_iter(
&self
) -> Result<impl Iterator<Item = (Vec<u8>, CommitPos)>, Error>
[src]
&self
) -> Result<impl Iterator<Item = (Vec<u8>, CommitPos)>, Error>
Iterator over the output_pos index.
pub fn get_output_pos(&self, commit: &Commitment) -> Result<u64, Error>
[src]
Get output_pos from index.
pub fn get_output_pos_height(
&self,
commit: &Commitment
) -> Result<Option<CommitPos>, Error>
[src]
&self,
commit: &Commitment
) -> Result<Option<CommitPos>, Error>
Get output_pos and block height from index.
pub fn get_previous_header(
&self,
header: &BlockHeader
) -> Result<BlockHeader, Error>
[src]
&self,
header: &BlockHeader
) -> Result<BlockHeader, Error>
Get the previous header.
pub fn get_block_header(&self, h: &Hash) -> Result<BlockHeader, Error>
[src]
Get block header.
pub fn save_block_sums(&self, h: &Hash, sums: BlockSums) -> Result<(), Error>
[src]
Save block_sums for the block.
pub fn get_block_sums(&self, h: &Hash) -> Result<BlockSums, Error>
[src]
Get block_sums for the block.
pub fn get_block_input_bitmap(&self, bh: &Hash) -> Result<Bitmap, Error>
[src]
Get the block input bitmap based on our spent index. Fallback to legacy block input bitmap from the db.
pub fn get_spent_index(&self, bh: &Hash) -> Result<Vec<CommitPos>, Error>
[src]
Get the "spent index" from the db for the specified block. If we need to rewind a block then we use this to "unspend" the spent outputs.
pub fn commit(self) -> Result<(), Error>
[src]
Commits this batch. If it's a child batch, it will be merged with the parent, otherwise the batch is written to db.
pub fn child(&mut self) -> Result<Batch<'_>, Error>
[src]
Creates a child of this batch. It will be merged with its parent on commit, abandoned otherwise.
pub fn blocks_iter(&self) -> Result<impl Iterator<Item = Block>, Error>
[src]
Iterator over all full blocks in the db. Uses default db serialization strategy via db protocol version.
pub fn blocks_raw_iter(
&self
) -> Result<impl Iterator<Item = (Vec<u8>, Vec<u8>)>, Error>
[src]
&self
) -> Result<impl Iterator<Item = (Vec<u8>, Vec<u8>)>, Error>
Iterator over raw data for full blocks in the db. Used during block migration (we need flexibility around deserialization).
pub fn protocol_version(&self) -> ProtocolVersion
[src]
Protocol version of our underlying db.
Auto Trait Implementations
impl<'a> !RefUnwindSafe for Batch<'a>
[src]
impl<'a> !Send for Batch<'a>
[src]
impl<'a> !Sync for Batch<'a>
[src]
impl<'a> Unpin for Batch<'a>
[src]
impl<'a> !UnwindSafe for Batch<'a>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> SafeBorrow<T> for T where
T: ?Sized,
T: ?Sized,
pub fn borrow_replacement(ptr: &T) -> &T
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> UnsafeAny for T where
T: Any,
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,