Beispiel #1
0
        private async void HandleRegistrationResponse(byte[] regResponse)
        {
            bool bDisconnect            = true;
            bool bUpdateConnectionState = true;

            if (AreArraysEqual(regResponse, ALLOWED_BYTES))
            {
                System.Diagnostics.Debug.WriteLine("ALLOWED");
                bDisconnect = false;
                RegistrationAccepted?.Invoke();
            }
            else if (AreArraysEqual(regResponse, DENIED_BYTES))
            {
                System.Diagnostics.Debug.WriteLine("DENIED");
                RegistrationDenied?.Invoke();
            }
            else if (AreArraysEqual(regResponse, TIMEOUT_BYTES))
            {
                System.Diagnostics.Debug.WriteLine("TIMEOUT");
                RegistrationTimedOut?.Invoke();
            }
            else if (ArrayStartsWith(AWAITING_APPROVAL_PREFIX, regResponse, AWAITING_APPROVAL_TOTAL))
            {
                System.Diagnostics.Debug.WriteLine("AWAITING");
                RegistrationWaiting?.Invoke();
                bDisconnect            = false;
                bUpdateConnectionState = false;
            }
            else
            {
                //RegistrationDenied?.Invoke();
                System.Diagnostics.Debug.WriteLine("UNKNOWN");
                bDisconnect            = false;
                bUpdateConnectionState = false;
            }

            if (bDisconnect)
            {
                System.Diagnostics.Debug.WriteLine("[reg] disconnecting (bdisconnect)");
                Cleanup();
                NotifyDisconnected();
            }
            else
            {
                if (bUpdateConnectionState)
                {
                    ConnectionState = TvConnectionState.Connected;
                }
                else
                {
                    await ListenForRegistrationResponse();
                }
            }
        }
        public override void Restart(bool overReplication = false)
        {
            base.Restart();
            Patient.ResetId();
            Worker.ResetId();
            NotArrivedPatients   = 0;
            WaitingRoom          = 0;
            ActualSimulationTime = 0;

            RegistrationRoom.Restart();
            ExaminationRoom.Restart();
            VaccinationRoom.Restart();

            RegistrationFront.Clear();
            ExaminationFront.Clear();
            VaccinationFront.Clear();

            SetNotArriveProbability();
            AddFirstEvent();

            RegistrationWaiting.Clear();
            ExaminationWaiting.Clear();
            VaccinationWaiting.Clear();

            RegistrationLength.Clear();
            ExaminationLength.Clear();
            VaccinationLength.Clear();
            WaitingRoomLength.Clear();

            if (!overReplication)
            {
                OR_RegistrationLength.Clear();
                OR_RegistrationWaiting.Clear();
                OR_RegistrationWorkload.Clear();
                OR_ExaminationLength.Clear();
                OR_ExaminationWaiting.Clear();
                OR_ExaminationWorkload.Clear();
                OR_VaccinationLength.Clear();
                OR_VaccinationWaiting.Clear();
                OR_VaccinationWorkload.Clear();
                OR_WaitingRoomLength.Clear();
                OR_MissingPatients.Clear();
                OR_Overtime.Clear();
            }
        }