void Run(ServerBootstrap sb, Bootstrap cb) { var serverInitializer = new ServerInitializer(); sb.ChildHandler(serverInitializer); var clientInitializer = new ClientInitializer(); cb.Handler(clientInitializer); // start server Task <IChannel> task = sb.BindAsync(LoopbackAnyPort); Assert.True(task.Wait(DefaultTimeout), "Server bind timed out"); this.serverChannel = task.Result; Assert.NotNull(this.serverChannel.LocalAddress); var endPoint = (IPEndPoint)this.serverChannel.LocalAddress; // connect to server task = cb.ConnectAsync(endPoint); Assert.True(task.Wait(DefaultTimeout), "Connect to server timed out"); this.clientChannel = task.Result; Assert.NotNull(this.clientChannel.LocalAddress); Assert.True(serverInitializer.Initialized.Wait(DefaultTimeout), "Channel initialize timed out"); Assert.True(serverInitializer.Close()); // Server connection closed will cause the client // to receive EOF and the channel should go inactive Assert.True(clientInitializer.Inactive.Wait(DefaultTimeout), "TcpChannel should fire Inactive if the server connection is closed."); Assert.Null(clientInitializer.ErrorCaught); }
public void Setup() { _mocker = new AutoMocker(); _settings = _mocker.GetMock <ISettings>(); _configurator = _mocker.CreateInstance <ClientInitializer>(); }
private void InitializeClient(bool loopback) { var excludedPlugins = Settings.Current.Plugins .Where(s => !s.Enabled) .Select(s => s.Name) .ToArray(); var initializer = new ClientInitializer { Nick = Settings.Current.Nick, NickColor = Settings.Current.NickColor, PluginsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins"), ExcludedPlugins = excludedPlugins }; ClientModel.Init(initializer); try { ClientModel.Player.SetOptions(Settings.Current.OutputAudioDevice); ClientModel.Recorder.SetOptions(Settings.Current.InputAudioDevice, new AudioQuality(1, Settings.Current.Bits, Settings.Current.Frequency)); } catch (ModelException me) { ClientModel.Player.Dispose(); ClientModel.Recorder.Dispose(); if (me.Code != ErrorCode.AudioNotEnabled) { throw; } else { var msg = Localizer.Instance.Localize(AudioInitializationFailedKey); MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning); } } IPAddress address = loopback ? Settings.Current.StateOfIPv6Protocol ? IPAddress.IPv6Loopback : IPAddress.Loopback : IPAddress.Parse(Settings.Current.Address); ClientModel.Client.Connect(new IPEndPoint(address, Settings.Current.Port)); }
public ChannelInboundHandlerAdapterAnonymousInnerClass(ClientInitializer outerInstance) { this.outerInstance = outerInstance; }
private void Connect(object obj) { //if(true) var dialog = new ConnectDialog(); if (dialog.ShowDialog() == true) { try { var trustedCertitifcatesPath = Settings.Current.TrustedCertificatesPath; var outputAudioDevice = Settings.Current.OutputAudioDevice; var inputAudioDevice = Settings.Current.InputAudioDevice; var bits = Settings.Current.Bits; var frequency = Settings.Current.Frequency; var excludedPlugins = Settings.Current.Plugins .Where(s => !s.Enabled) .Select(s => s.Name) .ToArray(); var path = AppDomain.CurrentDomain.BaseDirectory + "TrustedCertificates\\c.pfx"; //var path = "E:\\5th Semester\\CN Lab\\Project\\Abdullah Farooq\\c.pfx"; SecureString password = new NetworkCredential("", "1234").SecurePassword; var initializer = new ClientInitializer { Nick = dialog.Nick, NickColor = dialog.NickColor, Certificate = new X509Certificate2(dialog.CertificatePath, dialog.CertificatePassword), //Nick = "Server", // NickColor = Color.Red, //Certificate = new X509Certificate2(path, password), TrustedCertificatesPath = trustedCertitifcatesPath, PluginsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, PluginsDirectoryName), ExcludedPlugins = excludedPlugins }; ClientModel.Init(initializer); try { ClientModel.Player.SetOptions(outputAudioDevice); ClientModel.Recorder.SetOptions(inputAudioDevice, new AudioQuality(1, bits, frequency)); } catch (ModelException me) { ClientModel.Player.Dispose(); ClientModel.Recorder.Dispose(); if (me.Code != ErrorCode.AudioNotEnabled) { throw; } else { var msg = Localizer.Instance.Localize(AudioInitializationFailedKey); MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning); } } var serverUri = Connection.CreateTcpchatUri(dialog.Address); ClientModel.Client.Connect(serverUri); dialog.SaveSettings(); } catch (Exception e) { SelectedRoom.AddSystemMessage(Localizer.Instance.Localize(ParamsErrorKey)); if (ClientModel.IsInited) { ClientModel.Reset(); } } } }
private void Connect(object obj) { var dialog = new ConnectDialog(); if (dialog.ShowDialog() == true) { try { var trustedCertitifcatesPath = Settings.Current.TrustedCertificatesPath; var outputAudioDevice = Settings.Current.OutputAudioDevice; var inputAudioDevice = Settings.Current.InputAudioDevice; var bits = Settings.Current.Bits; var frequency = Settings.Current.Frequency; var excludedPlugins = Settings.Current.Plugins .Where(s => !s.Enabled) .Select(s => s.Name) .ToArray(); var initializer = new ClientInitializer { Nick = dialog.Nick, NickColor = dialog.NickColor, Certificate = new X509Certificate2(dialog.CertificatePath, dialog.CertificatePassword), TrustedCertificatesPath = trustedCertitifcatesPath, PluginsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, PluginsDirectoryName), ExcludedPlugins = excludedPlugins }; ClientModel.Init(initializer); try { ClientModel.Player.SetOptions(outputAudioDevice); ClientModel.Recorder.SetOptions(inputAudioDevice, new AudioQuality(1, bits, frequency)); } catch (ModelException me) { ClientModel.Player.Dispose(); ClientModel.Recorder.Dispose(); if (me.Code != ErrorCode.AudioNotEnabled) { throw; } else { var msg = Localizer.Instance.Localize(AudioInitializationFailedKey); MessageBox.Show(msg, ProgramName, MessageBoxButton.OK, MessageBoxImage.Warning); } } var serverUri = Connection.CreateTcpchatUri(dialog.Address); ClientModel.Client.Connect(serverUri); dialog.SaveSettings(); } catch (Exception e) { var errorMessage = Localizer.Instance.Localize(ParamsErrorKey); SelectedRoom.AddSystemMessage($"{errorMessage}\r\n{e.Message}"); if (ClientModel.IsInited) { ClientModel.Reset(); } } } }