pub struct NodeClient { /* private fields */ }Implementations§
Source§impl NodeClient
impl NodeClient
pub fn create_alias<T>( &self, alias: Alias<T>, scope: Option<T::Scope>, value: T, ) -> Result<()>
pub fn delete_alias<T>(
&self,
alias: Alias<T>,
scope: Option<T::Scope>,
) -> Result<()>where
T: Aliasable<Scope: StoreScopeCompat>,
pub fn lookup_alias<T>( &self, alias: Alias<T>, scope: Option<T::Scope>, ) -> Result<Option<T>>
pub fn resolve_alias<T>( &self, alias: Alias<T>, scope: Option<T::Scope>, ) -> Result<Option<T>>
pub fn list_aliases<T>( &self, scope: Option<T::Scope>, ) -> Result<Vec<(Alias<T>, T, Option<T::Scope>)>>
Source§impl NodeClient
impl NodeClient
pub fn get_application( &self, application_id: &ApplicationId, ) -> Result<Option<Application>>
pub async fn get_application_bytes( &self, application_id: &ApplicationId, ) -> Result<Option<Arc<[u8]>>>
pub fn has_application(&self, application_id: &ApplicationId) -> Result<bool>
pub fn install_application( &self, blob_id: &BlobId, size: u64, source: &ApplicationSource, metadata: Vec<u8>, ) -> Result<ApplicationId>
pub async fn install_application_from_path( &self, path: Utf8PathBuf, metadata: Vec<u8>, ) -> Result<ApplicationId>
pub async fn install_application_from_url( &self, url: Url, metadata: Vec<u8>, expected_hash: Option<&Hash>, ) -> Result<ApplicationId>
pub fn uninstall_application( &self, application_id: &ApplicationId, ) -> Result<()>
pub fn list_applications(&self) -> Result<Vec<Application>>
pub fn update_compiled_app( &self, application_id: &ApplicationId, compiled_blob_id: &BlobId, ) -> Result<()>
Source§impl NodeClient
impl NodeClient
pub async fn add_blob<S: AsyncRead>( &self, stream: S, expected_size: Option<u64>, expected_hash: Option<&Hash>, ) -> Result<(BlobId, u64)>
Sourcepub fn get_blob<'a>(
&'a self,
blob_id: &'a BlobId,
context_id: Option<&'a ContextId>,
) -> impl Future<Output = Result<Option<Blob>>> + 'a
pub fn get_blob<'a>( &'a self, blob_id: &'a BlobId, context_id: Option<&'a ContextId>, ) -> impl Future<Output = Result<Option<Blob>>> + 'a
Get blob from local storage or network if context_id is provided Returns a streaming Blob that can be used to read the data
Sourcepub async fn get_blob_bytes(
&self,
blob_id: &BlobId,
context_id: Option<&ContextId>,
) -> Result<Option<Arc<[u8]>>>
pub async fn get_blob_bytes( &self, blob_id: &BlobId, context_id: Option<&ContextId>, ) -> Result<Option<Arc<[u8]>>>
Get blob bytes from local storage with actor-based caching Falls back to network download if context_id is provided and blob not found locally
Sourcepub async fn find_blob_providers(
&self,
blob_id: &BlobId,
context_id: &ContextId,
) -> Result<Vec<PeerId>>
pub async fn find_blob_providers( &self, blob_id: &BlobId, context_id: &ContextId, ) -> Result<Vec<PeerId>>
Query the network for peers that have a specific blob
Sourcepub async fn announce_blob_to_network(
&self,
blob_id: &BlobId,
context_id: &ContextId,
size: u64,
) -> Result<()>
pub async fn announce_blob_to_network( &self, blob_id: &BlobId, context_id: &ContextId, size: u64, ) -> Result<()>
Announce a blob to the network for discovery
pub fn has_blob(&self, blob_id: &BlobId) -> Result<bool>
Sourcepub fn list_blobs(&self) -> Result<Vec<BlobInfo>>
pub fn list_blobs(&self) -> Result<Vec<BlobInfo>>
List all root blobs
Returns a list of all root blob IDs and their metadata. Root blobs are either:
- Blobs that contain links to chunks (segmented large files)
- Standalone blobs that aren’t referenced as chunks by other blobs This excludes individual chunk blobs to provide a cleaner user experience.
Sourcepub async fn delete_blob(&self, blob_id: BlobId) -> Result<bool>
pub async fn delete_blob(&self, blob_id: BlobId) -> Result<bool>
Delete a blob by its ID
Removes blob metadata from database and deletes the actual blob files. This includes all associated chunk files for large blobs.
Sourcepub async fn get_blob_info(
&self,
blob_id: BlobId,
) -> Result<Option<BlobMetadata>>
pub async fn get_blob_info( &self, blob_id: BlobId, ) -> Result<Option<BlobMetadata>>
Get blob metadata
Returns blob metadata including size, hash, and detected MIME type. This is efficient for checking blob existence and getting metadata info.
Sourcepub async fn detect_blob_mime_type(&self, blob_id: BlobId) -> Option<String>
pub async fn detect_blob_mime_type(&self, blob_id: BlobId) -> Option<String>
Detect MIME type by reading the first few bytes of a blob
Source§impl NodeClient
impl NodeClient
pub fn new( datastore: Store, blobstore: BlobManager, network_client: NetworkClient, node_manager: LazyRecipient<NodeMessage>, event_sender: Sender<NodeEvent>, ctx_sync_tx: Sender<(Option<ContextId>, Option<PeerId>)>, ) -> Self
pub async fn subscribe(&self, context_id: &ContextId) -> Result<()>
pub async fn unsubscribe(&self, context_id: &ContextId) -> Result<()>
pub async fn get_peers_count(&self, context: Option<&ContextId>) -> usize
pub async fn broadcast( &self, context: &Context, sender: &PublicKey, sender_key: &PrivateKey, artifact: Vec<u8>, height: NonZeroUsize, events: Option<Vec<u8>>, ) -> Result<()>
pub fn send_event(&self, event: NodeEvent) -> Result<()>
pub fn receive_events(&self) -> impl Stream<Item = NodeEvent>
pub async fn sync( &self, context_id: Option<&ContextId>, peer_id: Option<&PeerId>, ) -> Result<()>
Trait Implementations§
Source§impl Clone for NodeClient
impl Clone for NodeClient
Source§fn clone(&self) -> NodeClient
fn clone(&self) -> NodeClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for NodeClient
impl !RefUnwindSafe for NodeClient
impl Send for NodeClient
impl Sync for NodeClient
impl Unpin for NodeClient
impl !UnwindSafe for NodeClient
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§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>
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>
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 more