Beispiel #1
0
        private async ValueTask <IStateMachineController> StartStateMachineWrapper(SessionId sessionId, StateMachineOrigin origin, DataModelValue parameters)
        {
            var finalizer       = new DeferredFinalizer();
            var securityContext = SecurityContext.Create(SecurityContextType.NewTrustedStateMachine, finalizer);

            await using (finalizer.ConfigureAwait(false))
            {
                return(await StartStateMachine(sessionId, origin, parameters, securityContext, finalizer).ConfigureAwait(false));
            }
        }
Beispiel #2
0
        async ValueTask <IStateMachineController> IHost.StartStateMachineAsync(SessionId sessionId,
                                                                               StateMachineOrigin origin,
                                                                               DataModelValue parameters,
                                                                               ISecurityContext securityContext,
                                                                               DeferredFinalizer finalizer,
                                                                               CancellationToken token)
        {
            if (securityContext is SecurityContext {
                Type : SecurityContextType.NewStateMachine or SecurityContextType.NewTrustedStateMachine
            } ctx)
            {
                return(await StartStateMachine(sessionId, origin, parameters, ctx, finalizer, token).ConfigureAwait(false));
            }

            throw new StateMachineSecurityException(Resources.Exception_StartingStateMachineDenied);
        }