Example #1
0
        private async Task AdvanceActionWithState(IDeviceStateAction oldState)
        {
            IDeviceStateAction newState = stateActionController.GetNextAction(oldState);

            if (savedStackState.Count > 0)
            {
                newState.SetState(savedStackState.Pop());
            }

            oldState.Dispose();

            currentStateAction = newState;

            RaiseStateChange(oldState.WorkflowStateType, newState.WorkflowStateType);

            if (StateActionRules.NeedsDeviceRecovery)
            {
                if (currentStateAction.DoDeviceDiscovery())
                {
                    StateActionRules.NeedsDeviceRecovery = false;
                }
            }

            await newState.DoWork();
        }
Example #2
0
        private async Task AdvanceStateActionTransition(IDeviceStateAction oldState)
        {
            IDeviceStateAction newState = stateActionController.GetNextAction(oldState);

            if (savedStackState.Count > 0)
            {
                newState.SetState(savedStackState.Pop());
            }

            oldState.Dispose();

            currentStateAction = newState;

            LogStateChange(oldState.WorkflowStateType, newState.WorkflowStateType);

            await newState.DoWork();
        }
Example #3
0
        public void StopWorkflow()
        {
            if (!disposed)
            {
                disposed = true;

                //_ = LoggingClient.LogInfoAsync("Currently shutting down DEVICE Workflow...");
                Console.WriteLine("Currently shutting down DEVICE Workflow...");

                currentStateAction?.Dispose();

                DestroyComportMonitoring();
                DestroyConnectorEvents();
                DisconnectFromListener();

                ExecuteFinalState();
            }
        }