Skip to main content

submilli_engine/runtime/
session_finalizers.rs

1//! Embedder contract for durable package-owned cleanup. No guest references escape.
2use std::future::Future;
3use std::pin::Pin;
4
5use super::session_kv::SessionKvError;
6
7pub type FinalizerFuture<'a> =
8    Pin<Box<dyn Future<Output = Result<(), SessionKvError>> + Send + 'a>>;
9
10/// Successful registration means the arguments and package versions have
11/// committed. Ownership is resolved by the engine, never
12/// accepted from a guest argument.
13pub trait SessionFinalizers: Send + Sync {
14    fn register<'a>(
15        &'a self,
16        package: &'a str,
17        key: &'a [u16],
18        value: &'a [u16],
19    ) -> FinalizerFuture<'a>;
20    fn unregister<'a>(&'a self, package: &'a str, key: &'a [u16]) -> FinalizerFuture<'a>;
21}