pub struct ObjectStore { /* private fields */ }
Expand description
A blob store capable of storing large objects efficiently in streams.
Implementations§
source§impl ObjectStore
impl ObjectStore
sourcepub async fn get<T: AsRef<str> + Send>(
&self,
object_name: T,
) -> Result<Object, GetError>
pub async fn get<T: AsRef<str> + Send>( &self, object_name: T, ) -> Result<Object, GetError>
Gets an Object from the ObjectStore.
Object implements tokio::io::AsyncRead that allows to read the data from Object Store.
§Examples
use tokio::io::AsyncReadExt;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
let mut object = bucket.get("FOO").await?;
// Object implements `tokio::io::AsyncRead`.
let mut bytes = vec![];
object.read_to_end(&mut bytes).await?;
sourcepub async fn delete<T: AsRef<str>>(
&self,
object_name: T,
) -> Result<(), DeleteError>
pub async fn delete<T: AsRef<str>>( &self, object_name: T, ) -> Result<(), DeleteError>
Deletes an Object from the ObjectStore.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
bucket.delete("FOO").await?;
sourcepub async fn info<T: AsRef<str>>(
&self,
object_name: T,
) -> Result<ObjectInfo, InfoError>
pub async fn info<T: AsRef<str>>( &self, object_name: T, ) -> Result<ObjectInfo, InfoError>
Retrieves Object ObjectInfo.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
let info = bucket.info("FOO").await?;
sourcepub async fn put<T>(
&self,
meta: T,
data: &mut (impl AsyncRead + Unpin),
) -> Result<ObjectInfo, PutError>where
ObjectMetadata: From<T>,
pub async fn put<T>(
&self,
meta: T,
data: &mut (impl AsyncRead + Unpin),
) -> Result<ObjectInfo, PutError>where
ObjectMetadata: From<T>,
Puts an Object into the ObjectStore.
This method implements tokio::io::AsyncRead
.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
let mut file = tokio::fs::File::open("foo.txt").await?;
bucket.put("file", &mut file).await.unwrap();
sourcepub async fn watch(&self) -> Result<Watch, WatchError>
pub async fn watch(&self) -> Result<Watch, WatchError>
Creates a Watch stream over changes in the ObjectStore.
§Examples
use futures::StreamExt;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
let mut watcher = bucket.watch().await.unwrap();
while let Some(object) = watcher.next().await {
println!("detected changes in {:?}", object?);
}
sourcepub async fn watch_with_history(&self) -> Result<Watch, WatchError>
pub async fn watch_with_history(&self) -> Result<Watch, WatchError>
Creates a Watch stream over changes in the ObjectStore which yields values whenever there are changes for that key with as well as last value.
sourcepub async fn list(&self) -> Result<List, ListError>
pub async fn list(&self) -> Result<List, ListError>
Returns a List stream with all not deleted Objects in the ObjectStore.
§Examples
use futures::StreamExt;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("store").await?;
let mut list = bucket.list().await.unwrap();
while let Some(object) = list.next().await {
println!("object {:?}", object?);
}
sourcepub async fn seal(&mut self) -> Result<(), SealError>
pub async fn seal(&mut self) -> Result<(), SealError>
Seals a ObjectStore, preventing any further changes to it or its Objects.
§Examples
use futures::StreamExt;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let mut bucket = jetstream.get_object_store("store").await?;
bucket.seal().await.unwrap();
sourcepub async fn update_metadata<A: AsRef<str>>(
&self,
object: A,
metadata: UpdateMetadata,
) -> Result<ObjectInfo, UpdateMetadataError>
pub async fn update_metadata<A: AsRef<str>>( &self, object: A, metadata: UpdateMetadata, ) -> Result<ObjectInfo, UpdateMetadataError>
Updates Object ObjectMetadata.
§Examples
use async_nats::jetstream::object_store;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let mut bucket = jetstream.get_object_store("store").await?;
bucket
.update_metadata(
"object",
object_store::UpdateMetadata {
name: "new_name".to_string(),
description: Some("a new description".to_string()),
},
)
.await?;
sourcepub async fn add_link<'a, T, O>(
&self,
name: T,
object: O,
) -> Result<ObjectInfo, AddLinkError>where
T: ToString,
O: AsObjectInfo,
pub async fn add_link<'a, T, O>(
&self,
name: T,
object: O,
) -> Result<ObjectInfo, AddLinkError>where
T: ToString,
O: AsObjectInfo,
Adds a link to an Object. It creates a new Object in the ObjectStore that points to another Object and does not have any contents on it’s own. Links are automatically followed (one level deep) when calling ObjectStore::get.
§Examples
use async_nats::jetstream::object_store;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("bucket").await?;
let object = bucket.get("object").await?;
bucket.add_link("link_to_object", &object).await?;
sourcepub async fn add_bucket_link<T: ToString, U: ToString>(
&self,
name: T,
bucket: U,
) -> Result<ObjectInfo, AddLinkError>
pub async fn add_bucket_link<T: ToString, U: ToString>( &self, name: T, bucket: U, ) -> Result<ObjectInfo, AddLinkError>
Adds a link to another ObjectStore bucket by creating a new Object in the current ObjectStore that points to another ObjectStore and does not contain any data.
§Examples
use async_nats::jetstream::object_store;
let client = async_nats::connect("demo.nats.io").await?;
let jetstream = async_nats::jetstream::new(client);
let bucket = jetstream.get_object_store("bucket").await?;
bucket
.add_bucket_link("link_to_object", "another_bucket")
.await?;
Trait Implementations§
source§impl Clone for ObjectStore
impl Clone for ObjectStore
source§fn clone(&self) -> ObjectStore
fn clone(&self) -> ObjectStore
1.6.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for ObjectStore
impl !RefUnwindSafe for ObjectStore
impl Send for ObjectStore
impl Sync for ObjectStore
impl Unpin for ObjectStore
impl !UnwindSafe for ObjectStore
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)