pub struct StatePublisher<const STATE_MAX: usize> { /* private fields */ }Expand description
Publisher handle for a state layout.
§Contract
- Intended for a single writer.
- Each call to
StatePublisher::publishoverwrites the entire state value. - Publication uses the v1 parity protocol: readers should only accept snapshots observed at
an even
seqbefore and after the read.
Implementations§
Source§impl<const STATE_MAX: usize> StatePublisher<STATE_MAX>
impl<const STATE_MAX: usize> StatePublisher<STATE_MAX>
Sourcepub fn new(inner: &StateLayoutCell<STATE_MAX>) -> Self
pub fn new(inner: &StateLayoutCell<STATE_MAX>) -> Self
Create a publisher over a mapped layout without validating it.
Prefer try_new when constructing from an untrusted mapping.
Sourcepub fn try_new(inner: &StateLayoutCell<STATE_MAX>) -> Result<Self, Error>
pub fn try_new(inner: &StateLayoutCell<STATE_MAX>) -> Result<Self, Error>
Create a publisher after validating the mapped layout.
Sourcepub fn publish(&self, bytes: &[u8]) -> Result<u64, usize>
pub fn publish(&self, bytes: &[u8]) -> Result<u64, usize>
Overwrite the current state and return the new stable sequence number.
On success, the returned seq is even and can be used by readers as a monotonic marker.
§Errors
Returns Err(required_len) when bytes.len() > STATE_MAX. No bytes are published in
this case.
Trait Implementations§
impl<const STATE_MAX: usize> Send for StatePublisher<STATE_MAX>
Auto Trait Implementations§
impl<const STATE_MAX: usize> Freeze for StatePublisher<STATE_MAX>
impl<const STATE_MAX: usize> !RefUnwindSafe for StatePublisher<STATE_MAX>
impl<const STATE_MAX: usize> !Sync for StatePublisher<STATE_MAX>
impl<const STATE_MAX: usize> Unpin for StatePublisher<STATE_MAX>
impl<const STATE_MAX: usize> !UnwindSafe for StatePublisher<STATE_MAX>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more