pub struct LogView<C, T> { /* private fields */ }Expand description
A view that supports logging values of type T.
Implementations§
Source§impl<C, T> LogView<C, T>where
C: Context,
impl<C, T> LogView<C, T>where
C: Context,
Sourcepub fn push(&mut self, value: T)
pub fn push(&mut self, value: T)
Pushes a value to the end of the log.
let mut log = LogView::load(context).await.unwrap();
log.push(34);Source§impl<C, T> LogView<C, T>
impl<C, T> LogView<C, T>
Sourcepub async fn get(&self, index: usize) -> Result<Option<T>, ViewError>
pub async fn get(&self, index: usize) -> Result<Option<T>, ViewError>
Reads the logged value with the given index (including staged ones).
let mut log = LogView::load(context).await.unwrap();
log.push(34);
assert_eq!(log.get(0).await.unwrap(), Some(34));Sourcepub async fn multi_get(
&self,
indices: Vec<usize>,
) -> Result<Vec<Option<T>>, ViewError>
pub async fn multi_get( &self, indices: Vec<usize>, ) -> Result<Vec<Option<T>>, ViewError>
Reads several logged keys (including staged ones)
let mut log = LogView::load(context).await.unwrap();
log.push(34);
log.push(42);
assert_eq!(
log.multi_get(vec![0, 1]).await.unwrap(),
vec![Some(34), Some(42)]
);Sourcepub async fn multi_get_pairs(
&self,
indices: Vec<usize>,
) -> Result<Vec<(usize, Option<T>)>, ViewError>
pub async fn multi_get_pairs( &self, indices: Vec<usize>, ) -> Result<Vec<(usize, Option<T>)>, ViewError>
Reads the index-value pairs at the given positions.
let mut log = LogView::load(context).await.unwrap();
log.push(34);
log.push(42);
assert_eq!(
log.multi_get_pairs(vec![0, 1, 5]).await.unwrap(),
vec![(0, Some(34)), (1, Some(42)), (5, None)]
);Sourcepub async fn read<R>(&self, range: R) -> Result<Vec<T>, ViewError>where
R: RangeBounds<usize>,
pub async fn read<R>(&self, range: R) -> Result<Vec<T>, ViewError>where
R: RangeBounds<usize>,
Reads the logged values in the given range (including staged ones).
let mut log = LogView::load(context).await.unwrap();
log.push(34);
log.push(42);
log.push(56);
assert_eq!(log.read(0..2).await.unwrap(), vec![34, 42]);Trait Implementations§
Source§impl<C, T> ClonableView for LogView<C, T>
impl<C, T> ClonableView for LogView<C, T>
Source§fn clone_unchecked(&mut self) -> Result<Self, ViewError>
fn clone_unchecked(&mut self) -> Result<Self, ViewError>
Creates a clone of this view, sharing the underlying storage context but prone to
data races which can corrupt the view state.
Source§impl<C: Context, T> ContainerType for LogView<C, T>
impl<C: Context, T> ContainerType for LogView<C, T>
Source§async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
async fn resolve_field(&self, ctx: &Context<'_>) -> ServerResult<Option<Value>>
Resolves a field value and outputs it as a json value
async_graphql::Value. Read moreSource§async fn find_entity(
&self,
ctx: &Context<'_>,
params: &Value,
) -> ServerResult<Option<Value>>
async fn find_entity( &self, ctx: &Context<'_>, params: &Value, ) -> ServerResult<Option<Value>>
Find the GraphQL entity with the given name from the parameter. Read more
Source§fn collect_all_fields<'a>(
&'a self,
ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>,
fields: &mut Fields<'a>,
) -> Result<(), ServerError>
fn collect_all_fields<'a>( &'a self, ctx: &ContextBase<'a, &'a Positioned<SelectionSet>>, fields: &mut Fields<'a>, ) -> Result<(), ServerError>
Collect all the fields of the container that are queried in the
selection set. Read more
Source§impl<C, T> HashableView for LogView<C, T>
impl<C, T> HashableView for LogView<C, T>
Source§impl<C: Context, T> OutputType for LogView<C, T>
impl<C: Context, T> OutputType for LogView<C, T>
Source§fn create_type_info(registry: &mut Registry) -> String
fn create_type_info(registry: &mut Registry) -> String
Create type information in the registry and return qualified typename.
Source§async fn resolve(
&self,
ctx: &ContextSelectionSet<'_>,
_field: &Positioned<Field>,
) -> ServerResult<Value>
async fn resolve( &self, ctx: &ContextSelectionSet<'_>, _field: &Positioned<Field>, ) -> ServerResult<Value>
Resolve an output value to
async_graphql::Value.Source§fn qualified_type_name() -> String
fn qualified_type_name() -> String
Qualified typename.
Source§impl<C, T> View for LogView<C, T>
impl<C, T> View for LogView<C, T>
Source§const NUM_INIT_KEYS: usize = 1usize
const NUM_INIT_KEYS: usize = 1usize
The number of keys used for the initialization
Source§fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
fn pre_load(context: &C) -> Result<Vec<Vec<u8>>, ViewError>
Creates the keys needed for loading the view
Source§fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>
fn post_load(context: C, values: &[Option<Vec<u8>>]) -> Result<Self, ViewError>
Loads a view from the values
Source§fn rollback(&mut self)
fn rollback(&mut self)
Discards all pending changes. After that
flush should have no effect to storage.Source§async fn has_pending_changes(&self) -> bool
async fn has_pending_changes(&self) -> bool
Returns
true if flushing this view would result in changes to the persistent storage.Source§fn flush(&mut self, batch: &mut Batch) -> Result<bool, ViewError>
fn flush(&mut self, batch: &mut Batch) -> Result<bool, ViewError>
Persists changes to storage. This leaves the view still usable and is essentially neutral to the
program running. Crash-resistant storage implementations are expected to accumulate the desired
changes in the
batch variable first. If the view is dropped without calling flush, staged
changes are simply lost.
The returned boolean indicates whether the operation removes the view or not.Source§fn clear(&mut self)
fn clear(&mut self)
Clears the view. That can be seen as resetting to default. If the clear is followed
by a flush then all the relevant data is removed on the storage.
impl<C: Context, T> ObjectType for LogView<C, T>
Auto Trait Implementations§
impl<C, T> Freeze for LogView<C, T>where
C: Freeze,
impl<C, T> RefUnwindSafe for LogView<C, T>where
C: RefUnwindSafe,
T: RefUnwindSafe,
impl<C, T> Send for LogView<C, T>
impl<C, T> Sync for LogView<C, T>
impl<C, T> Unpin for LogView<C, T>
impl<C, T> UnwindSafe for LogView<C, T>where
C: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Source§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestCreates a shared type from an unshared type.
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Gets the layout of the type.
Source§impl<T> MockResults for T
impl<T> MockResults for T
Source§type Results = T
type Results = T
The mock native type of the results for the
MockInstance.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
impl<M, I> RuntimeMemory<&mut I> for Mwhere
M: RuntimeMemory<I>,
Source§fn read<'instance>(
&self,
instance: &'instance &mut I,
location: GuestPointer,
length: u32,
) -> Result<Cow<'instance, [u8]>, RuntimeError>
fn read<'instance>( &self, instance: &'instance &mut I, location: GuestPointer, length: u32, ) -> Result<Cow<'instance, [u8]>, RuntimeError>
Reads length bytes from memory from the provided location.
Source§fn write(
&mut self,
instance: &mut &mut I,
location: GuestPointer,
bytes: &[u8],
) -> Result<(), RuntimeError>
fn write( &mut self, instance: &mut &mut I, location: GuestPointer, bytes: &[u8], ) -> Result<(), RuntimeError>
Writes the bytes to memory at the provided location.
Source§impl<T> Upcastable for T
impl<T> Upcastable for T
Source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
Source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref