void ChangeStatus(TcpConnectionStatus newStatus) { if (status == newStatus) { return; } status = newStatus; logger.Info($"{nameof(TcpClient)} status changed to {newStatus}"); configuration.SynchronizeSafe(() => { ClientStatusChangedEventArgs args = new ClientStatusChangedEventArgs(newStatus); try { OnStatusChanged(args); } catch (Exception ex) { Logger.Error($"Unhandled exception on {this.GetType().Name}.{nameof(OnStatusChanged)}: {ex}"); } try { OnStatusChangedEvent?.Invoke(args); } catch (Exception ex) { Logger.Error($"Unhandled exception on {this.GetType().Name}.{nameof(OnStatusChangedEvent)}: {ex}"); } }, logger); }
protected virtual void OnTcpCient_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { ClientStatus = args.Status; if (args.Status == ClientStatus.Closed) { CanConnect = true; } }
protected override void OnTcpCient_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { base.OnTcpCient_ClientStatusChanged(sender, args); if (args.Status == ClientStatus.Connected) { _tcpClient.JoinGroup("Manager"); } }
protected virtual void OnTcpServer_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { if (args.Status == ClientStatus.Connected) { _serverClientID = args.ClientID; } else { _serverClientID = -1; } }
private void _server_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { if (!IsRunning) { return; } long proxyClientID = args.ClientID; if (args.Status == ClientStatus.Connected) { TcpClientEx tcpClient = new TcpClientEx(RawPacketSpliter.Default); tcpClient.Tag = proxyClientID; tcpClient.ClientStatusChanged += TcpClient_ClientStatusChanged; tcpClient.MessageReceived += TcpClient_MessageReceived; Task.Factory.StartNew(() => { bool isConnected = tcpClient.Connect(RemoteIP, (ushort)RemotePort); if (isConnected) { bool isOK = _clientDict.TryAdd(proxyClientID, tcpClient); System.Diagnostics.Debug.Assert(isOK, "add new client failed"); } else { _server.CloseClient(proxyClientID); } if (_waitConnDict.ContainsKey(proxyClientID)) { _waitConnDict[proxyClientID].Set(); } }); } else if (args.Status == ClientStatus.Closed) { if (_clientDict.TryRemove(proxyClientID, out TcpClientEx client)) { client.Close(); } } ClientCount = _server.Clients.Count; if (ClientCountChanged != null) { ClientCountChangedEventArgs countChangedArgs = new ClientCountChangedEventArgs() { NewCount = ClientCount }; ClientCountChanged(this, countChangedArgs); } }
private void _tcpServer_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { string connStr = args.Status == ClientStatus.Connected ? "connected" : "disconnected"; string logInfo = $"{args.IPEndPoint.ToString()} {connStr}\r\n"; if (args.Status == ClientStatus.Closed) { _uploadFileHandler.CloseClient(args.ClientID); } this.Dispatcher.BeginInvoke((Action)(() => { tbxLog.AppendText(logInfo); tbxLog.ScrollToEnd(); })); }
private void TcpClient_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { if (!IsRunning) { return; } TcpClientEx clientEx = sender as TcpClientEx; long proxyClientID = (long)clientEx.Tag; if (args.Status == ClientStatus.Closed) { if (_clientDict.TryRemove(proxyClientID, out TcpClientEx client)) { _server.CloseClient(proxyClientID); } } }
protected virtual void OnTcpCient_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { ClientStatus = args.Status; if (args.Status == ClientStatus.Closed) { CanConnect = true; } if (args.Status == ClientStatus.Connected) { QueryServerTimeRequest request = new QueryServerTimeRequest() { Name = "jackson", Message = ClientSendText }; QueryServerTimeResponse response = _tcpClient.QueryAsync <QueryServerTimeResponse>(request).Result; ClientRecvText += "server time: " + response.ServerTime.ToString() + "\r\n"; } }
private void _tcpClient_ClientStatusChanged(object sender, ClientStatusChangedEventArgs args) { if (args.Status == SiS.Communication.ClientStatus.Closed) { btnConnect.IsEnabled = true; btnConnect.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#DDDDDD")); } else if (args.Status == SiS.Communication.ClientStatus.Connecting) { btnConnect.IsEnabled = false; btnConnect.Background = new SolidColorBrush(Colors.Orange); } else if (args.Status == SiS.Communication.ClientStatus.Connected) { btnConnect.IsEnabled = false; btnConnect.Background = new SolidColorBrush(Colors.Green); //join "chat" group after connected _tcpClient.JoinGroup("chat"); } }
protected virtual void OnStatusChanged(ClientStatusChangedEventArgs args) { }
/// <summary> /// </summary> /// <param name="sender"> /// </param> /// <param name="e"> /// </param> private void messageServer_ClientConnected(object sender, ClientStatusChangedEventArgs e) { this.subscribers.Add(e.ClientId, new Subscriber()); }
/// <summary> /// </summary> /// <param name="sender"> /// </param> /// <param name="e"> /// </param> private void messageServer_ClientDisconnected(object sender, ClientStatusChangedEventArgs e) { this.subscribers.Remove(e.ClientId); }