Source code for ReFreSH.MobileSuit.Core.Middlewares.AppShellMiddleware

from .. import SuitBuildUtils
from ..ISuitMiddleware import ISuitMiddleware, SuitRequestDelegate
from ..Services.SuitAppShell import SuitAppShell
from ..Services.TaskService import ITaskService
from ..SuitContext import SuitContext
from ...RequestStatus import RequestStatus


[docs] class AppShellMiddleware(ISuitMiddleware): """Middleware to execute command over suit server shell."""
[docs] async def InvokeAsync(self, context: SuitContext, nextStep: SuitRequestDelegate) -> None: """Inherited from base class.""" # if context.CancellationToken.IsCancellationRequested: # context.RequestStatus = RequestStatus.Interrupt # await nextStep(context) if context.RequestStatus != RequestStatus.NotHandled: await nextStep(context) return tasks = context.ServiceProvider.GetRequiredService(ITaskService) client = context.ServiceProvider.GetRequiredService(SuitAppShell) asTask = context.Properties.get(SuitBuildUtils.SuitCommandTarget) == SuitBuildUtils.SuitCommandTargetAppTask forceClient = context.Properties.get(SuitBuildUtils.SuitCommandTarget) == SuitBuildUtils.SuitCommandTargetApp if asTask: context.RequestStatus = RequestStatus.Running tasks.AddTask(client.Execute(context), context) else: await tasks.RunTaskImmediately(client.Execute(context)) if forceClient and context.RequestStatus == RequestStatus.NotHandled: context.RequestStatus = RequestStatus.CommandNotFound await nextStep(context)