pub struct OffchainOverlayedChanges(_);
Expand description
In-memory storage for offchain workers recoding changes for the actual offchain storage implementation.
Implementations§
source§impl OffchainOverlayedChanges
impl OffchainOverlayedChanges
sourcepub fn into_iter(
self
) -> impl Iterator<Item = ((Vec<u8>, Vec<u8>), OffchainOverlayedChange)>
pub fn into_iter(
self
) -> impl Iterator<Item = ((Vec<u8>, Vec<u8>), OffchainOverlayedChange)>
Consume the offchain storage and iterate over all key value pairs.
sourcepub fn iter(
&self
) -> impl Iterator<Item = (&'_ (Vec<u8>, Vec<u8>), &'_ OffchainOverlayedChange)>
pub fn iter(
&self
) -> impl Iterator<Item = (&'_ (Vec<u8>, Vec<u8>), &'_ OffchainOverlayedChange)>
Iterate over all key value pairs by reference.
sourcepub fn drain(
&mut self
) -> impl Iterator<Item = ((Vec<u8>, Vec<u8>), OffchainOverlayedChange)>
pub fn drain(
&mut self
) -> impl Iterator<Item = ((Vec<u8>, Vec<u8>), OffchainOverlayedChange)>
Drain all elements of changeset.
sourcepub fn remove(&mut self, prefix: &[u8], key: &[u8])
pub fn remove(&mut self, prefix: &[u8], key: &[u8])
Remove a key and its associated value from the offchain database.
sourcepub fn set(&mut self, prefix: &[u8], key: &[u8], value: &[u8])
pub fn set(&mut self, prefix: &[u8], key: &[u8], value: &[u8])
Set the value associated with a key under a prefix to the value provided.
sourcepub fn get(&self, prefix: &[u8], key: &[u8]) -> Option<OffchainOverlayedChange>
pub fn get(&self, prefix: &[u8], key: &[u8]) -> Option<OffchainOverlayedChange>
Obtain a associated value to the given key in storage with prefix.
sourcepub fn overlay(
&self
) -> &OverlayedMap<(Vec<u8>, Vec<u8>), OffchainOverlayedChange>
pub fn overlay(
&self
) -> &OverlayedMap<(Vec<u8>, Vec<u8>), OffchainOverlayedChange>
Reference to inner change set.
sourcepub fn overlay_mut(
&mut self
) -> &mut OverlayedMap<(Vec<u8>, Vec<u8>), OffchainOverlayedChange>
pub fn overlay_mut(
&mut self
) -> &mut OverlayedMap<(Vec<u8>, Vec<u8>), OffchainOverlayedChange>
Mutable reference to inner change set.
Examples found in repository?
src/overlayed_changes/mod.rs (line 359)
354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433
pub fn start_transaction(&mut self) {
self.top.start_transaction();
for (_, (changeset, _)) in self.children.iter_mut() {
changeset.start_transaction();
}
self.offchain.overlay_mut().start_transaction();
}
/// Rollback the last transaction started by `start_transaction`.
///
/// Any changes made during that transaction are discarded. Returns an error if
/// there is no open transaction that can be rolled back.
pub fn rollback_transaction(&mut self) -> Result<(), NoOpenTransaction> {
self.top.rollback_transaction()?;
retain_map(&mut self.children, |_, (changeset, _)| {
changeset
.rollback_transaction()
.expect("Top and children changesets are started in lockstep; qed");
!changeset.is_empty()
});
self.offchain
.overlay_mut()
.rollback_transaction()
.expect("Top and offchain changesets are started in lockstep; qed");
Ok(())
}
/// Commit the last transaction started by `start_transaction`.
///
/// Any changes made during that transaction are committed. Returns an error if there
/// is no open transaction that can be committed.
pub fn commit_transaction(&mut self) -> Result<(), NoOpenTransaction> {
self.top.commit_transaction()?;
for (_, (changeset, _)) in self.children.iter_mut() {
changeset
.commit_transaction()
.expect("Top and children changesets are started in lockstep; qed");
}
self.offchain
.overlay_mut()
.commit_transaction()
.expect("Top and offchain changesets are started in lockstep; qed");
Ok(())
}
/// Call this before transfering control to the runtime.
///
/// This protects all existing transactions from being removed by the runtime.
/// Calling this while already inside the runtime will return an error.
pub fn enter_runtime(&mut self) -> Result<(), AlreadyInRuntime> {
self.top.enter_runtime()?;
for (_, (changeset, _)) in self.children.iter_mut() {
changeset
.enter_runtime()
.expect("Top and children changesets are entering runtime in lockstep; qed")
}
self.offchain
.overlay_mut()
.enter_runtime()
.expect("Top and offchain changesets are started in lockstep; qed");
Ok(())
}
/// Call this when control returns from the runtime.
///
/// This commits all dangling transaction left open by the runtime.
/// Calling this while outside the runtime will return an error.
pub fn exit_runtime(&mut self) -> Result<(), NotInRuntime> {
self.top.exit_runtime()?;
for (_, (changeset, _)) in self.children.iter_mut() {
changeset
.exit_runtime()
.expect("Top and children changesets are entering runtime in lockstep; qed");
}
self.offchain
.overlay_mut()
.exit_runtime()
.expect("Top and offchain changesets are started in lockstep; qed");
Ok(())
}
Trait Implementations§
source§impl Clone for OffchainOverlayedChanges
impl Clone for OffchainOverlayedChanges
source§fn clone(&self) -> OffchainOverlayedChanges
fn clone(&self) -> OffchainOverlayedChanges
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for OffchainOverlayedChanges
impl Debug for OffchainOverlayedChanges
source§impl Default for OffchainOverlayedChanges
impl Default for OffchainOverlayedChanges
source§fn default() -> OffchainOverlayedChanges
fn default() -> OffchainOverlayedChanges
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl RefUnwindSafe for OffchainOverlayedChanges
impl Send for OffchainOverlayedChanges
impl Sync for OffchainOverlayedChanges
impl Unpin for OffchainOverlayedChanges
impl UnwindSafe for OffchainOverlayedChanges
Blanket Implementations§
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.