private void SetActiveClient(Client client) { try { ClientLock.AcquireWriterLock(15 * 1000); Client = client; } catch (ApplicationException exception) { C.WriteLine("============================================================================"); C.WriteLine("DeadLock? ConsoleUiMediator::SetActiveClient(Client) AcquireWriterLock"); C.WriteLine("============================================================================"); return; } finally { ClientLock.ReleaseWriterLock(); } if (CurrentView.GetType() == typeof(IClientView)) { ((IClientView)CurrentView).SetActiveClient(Client); } // MainView also takes care of client interaction if (CurrentView == MainView) { MainView.SetActiveClient(Client); } }
public void OnClientDisconnected(Client client) { try { ClientLock.AcquireWriterLock(15 * 1000); if (Client == client) { Client = null; if (CurrentView.GetType() == typeof(ClientView)) { ((ClientView)CurrentView).SetActiveClient(null); CurrentView = MainView; C.WriteLine("Current interacting user has disconnected"); CurrentView.PrintBanner(); } } } catch (ApplicationException exception) { C.WriteLine("============================================================================"); C.WriteLine("DeadLock? ConsoleUiMediator::OnClientDisconnected(Client) AcquireReaderLock"); C.WriteLine("============================================================================"); } finally { ClientLock.ReleaseWriterLock(); } }
private void SetActiveClient(int clientId) { try { ClientLock.AcquireWriterLock(15 * 1000); Client = Application.GetClient(clientId); SetActiveClient(Client); } catch (ApplicationException exception) { C.WriteLine("============================================================================"); C.WriteLine("DeadLock? ConsoleUiMediator::SetActiveClient(int) AcquireWriterLock"); C.WriteLine("============================================================================"); } finally { ClientLock.ReleaseWriterLock(); } }