pub struct KernelRegistry { /* private fields */ }Expand description
Central registry for all kernels.
Implementations§
Source§impl KernelRegistry
impl KernelRegistry
Sourcepub fn with_license(license: SharedLicenseValidator) -> Self
pub fn with_license(license: SharedLicenseValidator) -> Self
Create a registry with license validation.
Sourcepub fn set_license(&mut self, license: SharedLicenseValidator)
pub fn set_license(&mut self, license: SharedLicenseValidator)
Set the license validator.
Sourcepub fn register_batch(&self, entry: BatchKernelEntry) -> Result<()>
pub fn register_batch(&self, entry: BatchKernelEntry) -> Result<()>
Register a batch kernel.
Sourcepub fn register_ring(&self, entry: RingKernelEntry) -> Result<()>
pub fn register_ring(&self, entry: RingKernelEntry) -> Result<()>
Register a ring kernel.
Sourcepub fn register_metadata(&self, metadata: KernelMetadata) -> Result<()>
pub fn register_metadata(&self, metadata: KernelMetadata) -> Result<()>
Register kernel metadata without a factory.
This is useful for kernels that implement GpuKernel but not the type-erased
BatchKernelDyn or RingKernelDyn traits. The metadata is stored for discovery
purposes, but the kernel cannot be instantiated through the registry.
Sourcepub fn get_batch(&self, id: &str) -> Option<BatchKernelEntry>
pub fn get_batch(&self, id: &str) -> Option<BatchKernelEntry>
Get a batch kernel by ID.
Sourcepub fn get_ring(&self, id: &str) -> Option<RingKernelEntry>
pub fn get_ring(&self, id: &str) -> Option<RingKernelEntry>
Get a ring kernel by ID.
Sourcepub fn get(&self, id: &str) -> Option<KernelMetadata>
pub fn get(&self, id: &str) -> Option<KernelMetadata>
Get any kernel metadata by ID (batch, ring, or metadata-only).
Sourcepub fn get_metadata_only(&self, id: &str) -> Option<KernelMetadata>
pub fn get_metadata_only(&self, id: &str) -> Option<KernelMetadata>
Get metadata-only entry by ID.
Sourcepub fn batch_kernel_ids(&self) -> Vec<String>
pub fn batch_kernel_ids(&self) -> Vec<String>
Get all batch kernel IDs.
Sourcepub fn ring_kernel_ids(&self) -> Vec<String>
pub fn ring_kernel_ids(&self) -> Vec<String>
Get all ring kernel IDs.
Sourcepub fn metadata_only_ids(&self) -> Vec<String>
pub fn metadata_only_ids(&self) -> Vec<String>
Get all metadata-only kernel IDs.
Sourcepub fn all_kernel_ids(&self) -> Vec<String>
pub fn all_kernel_ids(&self) -> Vec<String>
Get all kernel IDs.
Sourcepub fn by_domain(&self, domain: Domain) -> Vec<KernelMetadata>
pub fn by_domain(&self, domain: Domain) -> Vec<KernelMetadata>
Get kernels by domain.
Sourcepub fn by_mode(&self, mode: KernelMode) -> Vec<KernelMetadata>
pub fn by_mode(&self, mode: KernelMode) -> Vec<KernelMetadata>
Get kernels by mode.
Sourcepub fn stats(&self) -> RegistryStats
pub fn stats(&self) -> RegistryStats
Get registry statistics.
Sourcepub fn register_batch_typed<K, I, O>(
&self,
factory: impl Fn() -> K + Send + Sync + 'static,
) -> Result<()>where
K: BatchKernel<I, O> + 'static,
I: DeserializeOwned + Send + Sync + 'static,
O: Serialize + Send + Sync + 'static,
pub fn register_batch_typed<K, I, O>(
&self,
factory: impl Fn() -> K + Send + Sync + 'static,
) -> Result<()>where
K: BatchKernel<I, O> + 'static,
I: DeserializeOwned + Send + Sync + 'static,
O: Serialize + Send + Sync + 'static,
Register a batch kernel using a typed factory function.
This is the preferred way to register batch kernels. The factory closure
creates kernel instances on demand, and type erasure is handled automatically
via TypeErasedBatchKernel.
§Type Inference
Rust infers I and O from the BatchKernel<I, O> implementation on K,
so turbofish syntax is typically not needed:
registry.register_batch_typed(|| MyKernel::new())?;§Errors
Returns an error if the kernel ID is already registered or fails license validation.
Sourcepub fn register_batch_metadata_from<K>(
&self,
factory: impl Fn() -> K,
) -> Result<()>where
K: GpuKernel,
pub fn register_batch_metadata_from<K>(
&self,
factory: impl Fn() -> K,
) -> Result<()>where
K: GpuKernel,
Register a batch kernel’s metadata from a factory function.
This is for batch-mode kernels that implement GpuKernel but not
the full BatchKernel<I, O> trait. The metadata is stored for
discovery and health checking.
§Errors
Returns an error if the kernel ID is already registered or fails license validation.
Sourcepub fn register_ring_metadata_from<K>(
&self,
factory: impl Fn() -> K,
) -> Result<()>where
K: GpuKernel,
pub fn register_ring_metadata_from<K>(
&self,
factory: impl Fn() -> K,
) -> Result<()>where
K: GpuKernel,
Register a ring kernel’s metadata from a factory function.
Ring kernels require the RingKernel runtime for persistent actor execution and cannot be invoked directly via REST. This method registers the kernel’s metadata for discovery and health checking.
For full ring kernel deployment, use the RingKernel runtime directly.
§Errors
Returns an error if the kernel ID is already registered or fails license validation.
Sourcepub async fn execute_batch(
&self,
kernel_id: &str,
input_json: &[u8],
) -> Result<Vec<u8>>
pub async fn execute_batch( &self, kernel_id: &str, input_json: &[u8], ) -> Result<Vec<u8>>
Execute a batch kernel by ID with JSON input/output.
Looks up the kernel in the registry, creates an instance, and executes it with type-erased JSON serialization.
§Errors
Returns KernelNotFound if no batch kernel with this ID exists, or
propagates any execution error from the kernel.
Sourcepub fn total_count(&self) -> usize
pub fn total_count(&self) -> usize
Total number of registered kernels.
Sourcepub fn all_metadata(&self) -> Vec<KernelMetadata>
pub fn all_metadata(&self) -> Vec<KernelMetadata>
Get all kernel metadata across all categories, sorted by ID.
Returns metadata for batch, ring, and metadata-only kernels.
Sourcepub fn search(&self, pattern: &str) -> Vec<KernelMetadata>
pub fn search(&self, pattern: &str) -> Vec<KernelMetadata>
Search kernels by pattern (case-insensitive substring match on ID and description).
Sourcepub fn executable_kernel_ids(&self) -> Vec<String>
pub fn executable_kernel_ids(&self) -> Vec<String>
Get all executable batch kernel IDs (kernels with factory functions).
These are the kernels that can be invoked via REST/gRPC through the
type-erased BatchKernelDyn interface.
Sourcepub fn is_executable(&self, id: &str) -> bool
pub fn is_executable(&self, id: &str) -> bool
Check if a kernel is executable via REST/gRPC (has a BatchKernelDyn factory).
Sourcepub fn unregister(&self, id: &str) -> bool
pub fn unregister(&self, id: &str) -> bool
Unregister a kernel by ID.