#![deny(non_snake_case)]
use crate::WString;
use crate::runtime::StatelessServicePartition;
use crate::runtime::executor::BoxedCancelToken;
pub trait StatelessServiceFactory {
fn create_instance(
&self,
servicetypename: &WString,
servicename: &WString,
initializationdata: &[u8],
partitionid: &crate::GUID,
instanceid: i64,
) -> crate::Result<impl StatelessServiceInstance>;
}
#[trait_variant::make(StatelessServiceInstance: Send)]
pub trait LocalStatelessServiceInstance: Send + Sync + 'static {
async fn open(
&self,
partition: &StatelessServicePartition,
cancellation_token: BoxedCancelToken,
) -> crate::Result<WString>;
async fn close(&self, cancellation_token: BoxedCancelToken) -> crate::Result<()>;
fn abort(&self);
}