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(); } }