Esempio n. 1
0
        public StatusViewSwitch(ScenarioModel scenarioModel) : this()
        {
            DataContext = scenarioModel;

            tbScenarioName.Text = scenarioModel.ScenarioName;
            ItemView toSelect = null;

            foreach (var state in scenarioModel.AcceptedValues)
            {
                var itemView = new ItemView();
                itemView.Icon    = Icons.Icon.NavigateNext;
                itemView.Content = state;
                itemView.Margin  = new Thickness(0, 0, 0, 1);
                if (scenarioModel.ScenarioValue != null && scenarioModel.ScenarioValue.Equals(state))
                {
                    toSelect = itemView;
                }
                listItemsStates.Children.Add(itemView);
            }

            Loaded += (o, e) =>
            {
                if (toSelect != null)
                {
                    toSelect.Selected = true;
                    toSelect.Focus();
                }
            };

            listItemsStates.SelectionChanged += (o, e) =>
            {
                var selectedItem = listItemsStates.GetSelectedItems().FirstOrDefault() as ItemView;
                if (selectedItem != null && selectedItem.Content.ToString() != scenarioModel.ScenarioValue)
                {
                    scenarioModel.ScenarioValue = selectedItem.Content.ToString();
                    StateChanged?.Invoke(this, new RoutedEventArgs());
                }
            };
        }
        public void ConditionalExitActionIsNotCalled()
        {
            var evt = new ManualResetEvent(false);
            var exitActionCalled = false;

            Action exitAction = () => exitActionCalled = true;

            StateMachine.AddAutomaticTransition(TestStates.Collapsed, TestStates.FadingIn);
            StateMachine.AddExitAction(TestStates.Collapsed, exitAction, () => false);

            _stateChangedSubscription = StateChanged.Where(args => args.ToState == TestStates.FadingIn).Subscribe(args =>
            {
                evt.Set();
                _stateChangedSubscription.Dispose();
            });

            StateMachine.Start();

            evt.WaitOne();

            Assert.False(exitActionCalled);
        }
Esempio n. 3
0
        public void Write(BinaryState state, WriteBinaryStateMode mode)
        {
            // TODO: Implement animations here.
            foreach (var output in _outputs)
            {
                output.Write(state, WriteBinaryStateMode.NoCommit);
            }

            if (mode == WriteBinaryStateMode.Commit)
            {
                foreach (var output in _outputs)
                {
                    output.Write(state);
                }
            }

            var oldState = _state;

            _state = state;

            StateChanged?.Invoke(this, new BinaryStateChangedEventArgs(oldState, _state));
        }
Esempio n. 4
0
        /// <summary>
        /// Updates a User.
        /// </summary>
        /// <param name="attributes"></param>
        /// <returns></returns>
        public async Task <User> Update(UserAttributes attributes)
        {
            if (CurrentSession == null || string.IsNullOrEmpty(CurrentSession.AccessToken))
            {
                throw new Exception("Not Logged in.");
            }

            try
            {
                var result = await api.UpdateUser(CurrentSession.AccessToken, attributes);

                CurrentUser = result;

                StateChanged?.Invoke(this, new ClientStateChanged(AuthState.UserUpdated));

                return(result);
            }
            catch (RequestException ex)
            {
                throw ParseRequestException(ex);
            }
        }
Esempio n. 5
0
        protected virtual void OnStateChanged(StateChange stateChange)
        {
            using (Trace.Log())
            {
                connectionState = stateChange.NewState;
                Console.WriteLine($"{stateChange.OldState} {stateChange.NewState}");

                if (stateChange.NewState == ConnectionState.Disconnected)
                {
                    if (stateChange.OldState == ConnectionState.Disconnected)
                    {
                        hubConnection?.Start();
                    }
                    else if (reconnect)
                    {
                        Task.Delay(1000).ContinueWith((t) => hubConnection?.Start());
                    }
                }

                StateChanged?.Invoke(stateChange);
            }
        }
Esempio n. 6
0
        private void MqttCallback(DeviceMessage deviceMessage)
        {
            var oldState = _state;

            var payload = Encoding.UTF8.GetString(deviceMessage.Payload);

            if (payload == "pressed")
            {
                _state = BinaryState.High;
            }
            else
            {
                _state = BinaryState.Low;
            }

            if (_state == oldState)
            {
                return;
            }

            StateChanged?.Invoke(this, new BinaryStateChangedEventArgs(oldState, _state));
        }
        public void SingleEntryActionIsCalled()
        {
            var evt = new ManualResetEvent(false);
            var entryActionCalled = false;

            Action entryAction = () => entryActionCalled = true;

            StateMachine.AddAutomaticTransition(TestStates.Collapsed, TestStates.FadingIn);
            StateMachine.AddEntryAction(TestStates.FadingIn, entryAction);

            _stateChangedSubscription = StateChanged.Where(args => args.ToState == TestStates.FadingIn).Subscribe(args =>
            {
                _stateChangedSubscription.Dispose();
                evt.Set();
            });

            StateMachine.Start();

            evt.WaitOne();

            Assert.True(entryActionCalled);
        }
Esempio n. 8
0
        //it will start actual recording, append if there is data
        //in the wave file through the RecordCaptureData()
        public void StartRecording(IAudioMediaAsset asset)
        {
            StateChanged mStateChanged = new StateChanged(mState);

            mState = AudioRecorderState.Recording;
            FireEvent(mStateChanged);
            m_Channels   = asset.Channels;
            m_SampleRate = asset.SampleRate;
            m_bitDepth   = asset.BitDepth;
            mAsset       = new AudioMediaAsset(m_Channels, m_bitDepth, m_SampleRate);
            mAsset       = asset.Copy() as AudioMediaAsset;
            AssetManager manager = mAsset.Manager as AssetManager;

            sProjectDirectory = manager.DirPath;
            InputFormat       = GetInputFormat();
            m_sFileName       = GetFileName();
            BinaryWriter bw = new BinaryWriter(File.Create(m_sFileName));

            CreateRIFF(bw);
            CreateCaptureBuffer();
            InitRecording(true);
        }
Esempio n. 9
0
        public void Expand()
        {
            if (Expanded)
            {
                return;
            }

            if (StateChanging != null)
            {
                CancelEventArgs args = new CancelEventArgs();
                StateChanging(this, args);
                if (args.Cancel)
                {
                    return;
                }
            }

            Expanded = true;
            ArrangeLayout();

            StateChanged?.Invoke(this, null);
        }
Esempio n. 10
0
        public void Connect(IntPtr hwnd, uint attitudeFrequency)
        {
            try
            {
                UnsubscribeEvents();

                _simConnect?.Dispose();
                _attitudeTimer?.Dispose();

                _simConnect    = new SimConnectImpl(AppName, hwnd, WM_USER_SIMCONNECT, null, 0);
                _attitudeTimer = new Timer(RequestAttitudeData, null, 100, 1000 / attitudeFrequency);

                SubscribeEvents();

                StateChanged?.Invoke(false);
            }
            catch (COMException e)
            {
                Console.Error.WriteLine("Exception caught: " + e);
                StateChanged?.Invoke(true);
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Change the state.
        /// </summary>
        public void SetState
        (
            bool newState
        )
        {
            Log.Trace
            (
                nameof(BusyState) + "::" + nameof(SetState)
                + ": newState="
                + newState
            );

            lock (_lock)
            {
                if (newState != _currentState)
                {
                    if (newState)
                    {
                        _waitHandle.Reset();
                        _thread = Thread.CurrentThread;
                    }
                    else
                    {
                        _waitHandle.Set();
                    }

                    _currentState = newState;

                    if (UseAsync)
                    {
                        StateChanged.RaiseAsync(this);
                    }
                    else
                    {
                        StateChanged.Raise(this);
                    }
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Starte den Automaten beim jeweiligen Zustand
        /// </summary>
        /// <param name="state"></param>
        public void Start(Enum stateEnum)
        {
            int stateNumber = EnumHelper.ToInt(stateEnum);

            if (stateNumber < 0)
            {
                Log.Error($"Fsm;Start;{Name}; Statename {stateEnum} existiert nicht");
                return;
            }
            ActState = states[stateNumber];
            StateChanged?.Invoke(this,
                                 new FsmTransition
            {
                Time      = DateTime.Now,
                Fsm       = Name,
                LastState = "",
                ActState  = ActState.StateEnum.ToString(),
                Input     = ""
            });
            IsRunning = true;
            CheckActStateInputs();  // gleich beim Start entsprechend reagieren
        }
Esempio n. 13
0
        public void Close()
        {
            logger.Debug("Close()");

            if (socket != null)
            {
                socket.Close();
                socket = null;
            }

            if (syncEvent != null)
            {
                syncEvent.Close();
                syncEvent = null;
            }

            state = ClientState.Closed;

            isAuthenticated = false;

            StateChanged?.Invoke();
        }
Esempio n. 14
0
            public void Open()
            {
                _messageQueue.Open();
                StateChanged?.Invoke();

                var histAdapter = _parent.HistoryMessageAdapterEx;

                ThreadingHelper
                .Thread(() => CultureInfo.InvariantCulture.DoInCulture(() =>
                {
                    while (!_messageQueue.IsClosed)
                    {
                        try
                        {
                            var sended    = histAdapter.SendOutMessage();
                            var processed = false;

                            while (_messageQueue.TryDequeue(out var message, true, false))
                            {
                                NewOutMessage?.Invoke(message);
                                processed = true;
                            }

                            if (!sended && !processed && !_messageQueue.IsClosed)
                            {
                                Thread.Sleep(1000);
                            }
                        }
                        catch (Exception ex)
                        {
                            _parent.SendOutError(ex);
                        }
                    }

                    StateChanged?.Invoke();
                }))
                .Name("History emulation channel thread.")
                .Launch();
            }
Esempio n. 15
0
        private void RevertButton_Click(object sender, EventArgs e)
        {
            using (PerfSection p10 = new PerfSection("Perforce - Check in scenario component: " + mTopic.Name))
            {
                Cursor.Current = Cursors.WaitCursor;

                PerforceChangeList newlist = CoreGlobals.getPerforce().GetNewChangeList("Scenario Topic: " + GetTopicAlias(mTopic.Name) + "   Scenario: " + Path.GetFileNameWithoutExtension(CoreGlobals.ScenarioFile));
                foreach (string file in mTopic.Files)
                {
                    if (newlist.ReOpenFile(file) == false)
                    {
                        CoreGlobals.ShowMessage("Error re-opening: " + file);
                        return;
                    }
                }
                if (newlist.Revert() == false)
                {
                    CoreGlobals.ShowMessage("Error reverting in files");
                }

                mTopic.UpdateState();
                UpdateUI();

                if (!mbPaused && StateChanged != null)
                {
                    StateChanged.Invoke(this, null);
                }
                using (PerfSection p1 = new PerfSection("Clean list"))
                {
                    //CoreGlobals.getPerforce().CleanEmptyChangeLists("Scenario Topic: ");
                    if (CoreGlobals.getPerforce().HasFilesOpen(newlist.ID) == false)
                    {
                        CoreGlobals.getPerforce().getConnection().P4DeleteList(newlist.ID);
                    }
                }
                Cursor.Current = Cursors.Default;
            }
        }
Esempio n. 16
0
        public bool Connect(string host, int port = 25456)
        {
            logger.Debug("Connect() " + host + " " + port);

            if (state != ClientState.Disconnected)
            {
                logger.Warn("Connect(...) invalid state: " + state);
                return(false);
            }

            state = ClientState.Connecting;
            StateChanged?.Invoke();

            this.Host = host;
            this.Port = port;

            Task.Run(() =>
            {
                CommunicationLoop();
            });

            return(true);
        }
        public async Task InitAsync()
        {
            if (isInitialized)
            {
                throw new ServiceProviderInvalidException("ServiceProvider уже инициализирован");
            }

            logger.Debug("Инициализация...");
            isInitialized = true;

            InitService();
            StateChanged?.Invoke(this, new ServiceStateChangedEventArgs(ServiceState.ExpectingOnline));

            if (!await CheckAvailability())
            {
                logger.Debug("Сервис не запущен, запускаю встроенный сервис...");
                CreateEmbedService();
            }
            else
            {
                logger.Debug("Сервис запущен внешне");
            }
        }
Esempio n. 18
0
        private void HandleOpenState(bool opened)
        {
            // TODO: find a way to remove javascript
            if (opened)
            {
                ExecuteAfterRender(async() =>
                {
                    await JSRunner.OpenModal(ElementRef, ElementId);
                });
            }
            else
            {
                ExecuteAfterRender(async() =>
                {
                    await JSRunner.CloseModal(ElementRef, ElementId);
                });
            }

            StateChanged?.Invoke(this, new ModalStateEventArgs(opened));

            DirtyClasses();
            DirtyStyles();
        }
Esempio n. 19
0
 //возврат книг
 public void Return_book(Book book)
 {
     if (Books_in_Lib.Count() != 0)
     {
         int num = Book_Index(book);
         if (num == -1)
         {
             Console.WriteLine("Книгу брали не из данной библиотеки");
         }
         else
         {
             Books_in_Lib.RemoveAt(num);
             Book_Subscr newbook = new Book_Subscr(book, null, DateTime.Today.Date);
             Books_in_Lib.Add(newbook);
             state = Book_State.inLib;
             StateChanged?.Invoke(this, state);
         }
     }
     else
     {
         Console.WriteLine("Возврат не возможен, в библиотеке нет книг");
     }
 }
Esempio n. 20
0
        // We ensure that our event is raised on the Automation thread .. (Eases concurrency issues in handling it, though it will get passed on to the main thread...)
        void OnStateChanged(StateChangeType stateChangeType)
        {
            StateChangeEventArgs stateChangedArgs;

            switch (stateChangeType)
            {
            case StateChangeType.Multiple:
                stateChangedArgs = s_stateChangeMultiple;
                break;

            case StateChangeType.Move:
                stateChangedArgs = s_stateChangeMove;
                break;

            case StateChangeType.TextChange:
                stateChangedArgs = s_stateChangeTextChange;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(stateChangeType));
            }
            StateChanged?.Invoke(this, stateChangedArgs);
        }
Esempio n. 21
0
        /// <summary>
        /// Log in a user given a User supplied OTP received via mobile.
        /// </summary>
        /// <param name="phone">The user's phone number.</param>
        /// <param name="token">Token sent to the user's phone.</param>
        /// <returns></returns>
        public async Task <Session> VerifyOTP(string phone, string token)
        {
            try
            {
                await DestroySession();

                var session = await api.VerifyMobileOTP(phone, token);

                if (session?.AccessToken != null)
                {
                    await PersistSession(session);

                    StateChanged?.Invoke(this, new ClientStateChanged(AuthState.SignedIn));
                    return(session);
                }

                return(null);
            }
            catch (RequestException ex)
            {
                throw ExceptionHandler.Parse(ex);
            }
        }
Esempio n. 22
0
        /// <summary>
        /// Signs in a User.
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public async Task <Session> SignIn(string email, string password)
        {
            await DestroySession();

            try
            {
                var result = await api.SignInWithEmail(email, password);

                if (result?.User?.ConfirmedAt != null)
                {
                    await PersistSession(result);

                    StateChanged?.Invoke(this, new ClientStateChanged(AuthState.SignedIn));
                    return(result);
                }

                return(null);
            }
            catch (RequestException ex)
            {
                throw ParseRequestException(ex);
            }
        }
Esempio n. 23
0
        void ProcessEvent(string eventInfo)
        {
            if (string.IsNullOrWhiteSpace(eventInfo))
            {
                return;
            }
            var info = eventInfo.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);

            switch (info[0])
            {
            case "RaiseMessage":
                RaiseMessage?.Invoke(info[1]);
                break;

            case "StateMessageChanged":
                StateMessageChanged?.Invoke(info[1]);
                break;

            case "StateChanged":
                StateChanged?.Invoke((PhoneState)Enum.Parse(typeof(PhoneState), info[1]));
                break;
            }
        }
Esempio n. 24
0
        private void RegisterStateChangedEvent()
        {
            _stateChangedCallback = (error, state, _) =>
            {
                var prevState = _state.Value;

                _state.Value = state;

                if (prevState != state)
                {
                    StateChanged?.Invoke(this, new ScreenMirroringStateChangedEventArgs(state));
                }

                if (error != ScreenMirroringErrorCode.None)
                {
                    ErrorOccurred?.Invoke(this, new ScreenMirroringErrorOccurredEventArgs(
                                              ScreenMirroringError.InvalidOperation));
                }
            };

            Native.SetStateChangedCb(Handle, _stateChangedCallback).
            ThrowIfError("Failed to initialize StateChanged event.");
        }
Esempio n. 25
0
        /// <summary>
        /// Call the AI to place his penguin
        /// </summary>
        public void PlacePenguin()
        {
            switch (CurrentPlayer.PlayerType)
            {
            case PlayerType.AIEasy:     //Easy difficulty AI
                Coordinates posEasy = _aiEasy.PlacementPenguin();
                PlacePenguinManual(posEasy.X, posEasy.Y);
                break;

            case PlayerType.AIMedium:
                // This should normaly be a medium AI
                Coordinates posM = _aiEasy.PlacementPenguin();
                PlacePenguinManual(posM.X, posM.Y);
                break;

            case PlayerType.AIHard:
                // This should normaly be a hard AI
                Coordinates posH = _aiEasy.PlacementPenguin();
                PlacePenguinManual(posH.X, posH.Y);
                break;
            }
            StateChanged?.Invoke(this, null);
        }
Esempio n. 26
0
        public void AutomaticTransitionWithConditionIsMade()
        {
            var evt            = new ManualResetEvent(false);
            var transitionMade = false;

            StateMachine.AddAutomaticTransition(TestStates.Collapsed, TestStates.FadingIn, () => true);

            _stateChangedSubscription = StateChanged.Where(args => args.ToState == TestStates.FadingIn).Subscribe(args =>
            {
                transitionMade = true;
                _stateChangedSubscription.Dispose();
                evt.Set();
            });

            StateMachine.Start();

            while (!evt.WaitOne(50))
            {
                DispatcherHelper.DoEvents();
            }

            Assert.True(transitionMade);
        }
Esempio n. 27
0
        private void controlClick(object sender, MouseEventArgs e)
        {
            var command = getCommand(e.X, e.Y, e.Button);

            if (!command.HasValue)
            {
                return;
            }

            _lastClick   = command;
            _showPreview = false;

            if (e.Button == MouseButtons.Middle)
            {
                States = null;
                return;
            }

            setButtonState(command.Value, _states);
            Refresh();

            StateChanged?.Invoke(this, null);
        }
Esempio n. 28
0
        private void makeProhibitedValuesIgnored()
        {
            if (_states == null)
            {
                return;
            }

            bool stateChanged = false;

            for (int i = 0; i < _states.Length; i++)
            {
                stateChanged = _states[i] == FilterValueState.Prohibited;
                if (stateChanged)
                {
                    _states[i] = FilterValueState.Ignored;
                }
            }

            if (stateChanged)
            {
                StateChanged?.Invoke(this, null);
            }
        }
        public void SetState(string id, params IParameter[] parameters)
        {
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            string oldState = GetState();

            for (int i = 0; i < States.Count; i++)
            {
                var state = States[i];

                if (state.Id.Equals(id, StringComparison.OrdinalIgnoreCase))
                {
                    bool stateIsAlreadyActive = i == _index;
                    if (stateIsAlreadyActive && _turnOffIfStateIsAppliedTwice)
                    {
                        if (state.Id == BinaryActuatorState.Off.ToString())
                        {
                            // The state is already "Off".
                            return;
                        }

                        TurnOff();
                        return;
                    }

                    _index = i;
                    state.Apply(parameters);
                    StateChanged?.Invoke(this, new StateMachineStateChangedEventArgs(oldState, state.Id));
                    return;
                }
            }

            throw new NotSupportedException("StateMachineActuator '" + Id + "' does not support state '" + id + "'.");
        }
Esempio n. 30
0
        private void SetState(GlobalThreadState newState)
        {
            GlobalThreadState oldState;

            lock (stateLock)
            {
                oldState = State;

                if (oldState == GlobalThreadState.PENDING_SHUTDOWN && newState == GlobalThreadState.PENDING_SHUTDOWN)
                {
                    // when the state is already in PENDING_SHUTDOWN, its transition to itself
                    // will be refused but we do not throw exception here
                    return;
                }
                else if (oldState == GlobalThreadState.DEAD)
                {
                    // when the state is already in NOT_RUNNING, all its transitions
                    // will be refused but we do not throw exception here
                    return;
                }
                else if (!oldState.IsValidTransition(newState))
                {
                    log.LogError("{LogPrefix}Unexpected state transition from {OldState} to {NewState}", logPrefix, oldState,
                                 newState);
                    throw new StreamsException($"Unexpected state transition from {oldState} to {newState}");
                }
                else
                {
                    log.LogInformation("{LogPrefix}State transition from {OldState} to {NewState}", logPrefix, oldState,
                                       newState);
                }

                State = newState;
            }

            StateChanged?.Invoke(this, oldState, State);
        }