void PacketHandler(IDataPacket dataPacket, ref Data data) { switch (dataPacket.ConnectionType) { case ConnectionType.Client: Logger.Instance.Log("ConnectionType is [Client]"); var clientData = (ClientDataPacket)dataPacket; clientData.Servers = GetServers(clientData.Offset); data.TcpClient.GetStream().Write(clientData.ToBytes(), 0, Packet.MAX_BYTE_LENGTH); break; case ConnectionType.Server: Logger.Instance.Log("ConnectionType is [Server]"); var serverData = (ServerDataPacket)dataPacket; if (serverData.RemoveFromCollection) { var temp = data; Logger.Instance.Log($"Server {temp.ID} @ {serverData.IPv4} Removed from collection"); ConnectedClients.Remove(ConnectedClients.First(o => o.ID == temp.ID)); break; } data.IPv4 = serverData.IPv4; data.Name = serverData.Name; data.Port = serverData.Port; serverData.ID = data.ID; var bytes = serverData.ToBytes(); data.TcpClient.GetStream().Write(bytes, 0, bytes.Length); break; case ConnectionType.Hub: Logger.Instance.Log("ConnectionType is [Hub]"); break; } }
private void OnSessionTerminated(SessionInfo sessionInfo) { Application.Current.Dispatcher.Invoke(() => { var displayData = ConnectedClients.First(dd => dd.SessionId == sessionInfo.SessionId.ToString()); ConnectedClients.Remove(displayData); }); }
/// <summary> /// Remove a client. /// </summary> /// <param name="clientAddress">The target client's mac address.</param> public void RemoveClient(string clientAddress) { lock (ConnectedClients) { ConnectedClients.Remove(ConnectedClients.First(c => c.MacAddress == clientAddress)); } // Keep the pending messages for this client. If it connects again, we want to be able to send the missing messages. }
private void OnLoggedInUserUpdated(SessionInfo sessionInfo) { Application.Current.Dispatcher.Invoke(() => { var displayData = ConnectedClients.First(dd => dd.SessionId == sessionInfo.SessionId.ToString()); displayData.LogginInUser = sessionInfo.LoggedInUser == null ? "no User logged in" : sessionInfo.LoggedInUser.Name; }); }
public void Send(string _message) { if (!_message.Contains("/stock=")) { var sender = ConnectedClients.First(x => x.Id.Equals(Context.ConnectionId)); Clients.All.SendData(System.DateTime.UtcNow.AddHours(-5).ToString("yyyy-MM-dd HH:mm:ss") + " - " + sender.UserName, _message); } else { string _stockCode = _message.Split(new string[] { "/stock=" }, StringSplitOptions.None)[1]; string _respuesta = new ChatJobsity.App_Code.StockProvider().GetStock(_stockCode); if (_respuesta.Split(',')[1] == "N/D") { Clients.All.SendData(System.DateTime.UtcNow.AddHours(-5).ToString("yyyy-MM-dd HH:mm:ss") + " - Bot Stock", "the code of stock is not correct"); } else { string[] _dataStock = _respuesta.Split(','); Clients.All.SendData(System.DateTime.UtcNow.AddHours(-5).ToString("yyyy-MM-dd HH:mm:ss") + " - Bot Stock", String.Format("{0} quote is ${1} per share", _dataStock[0], _dataStock[3])); } } }
void PacketHandler(IDataPacket dataPacket, ref ClientObject cO) { switch (dataPacket.ConnectionType) { case ConnectionType.Client: Logger.Instance.Log("ConnectionType is [Client]"); var clientData = (ClientDataPacket)dataPacket; Logger.Instance.Log(clientData.ToString()); clientData.Servers = GetServers(clientData.Offset); cO.Data.TcpClient.GetStream().Write(clientData.ToBytes(), 0, clientData.ToBytes().Length); break; case ConnectionType.Server: Logger.Instance.Log("ConnectionType is [Server]"); var serverData = (ServerDataPacket)dataPacket; Logger.Instance.Log(serverData.ToString()); if (serverData.RemoveFromCollection) { var temp = cO.Data; Logger.Instance.Log($"Removing Server {serverData.ID} from Collection"); RemoveClient(ConnectedClients.First(o => o.Data.ID == temp.ID)); Logger.Instance.Log($"Joining Thread of Server {serverData.ID}"); cO.DataListener.Join(); break; } cO.Data.IPv4 = serverData.IPv4; cO.Data.Name = serverData.Name; cO.Data.Port = serverData.Port; serverData.ID = cO.Data.ID; cO.Data.TcpClient.GetStream().Write(serverData.ToBytes(), 0, serverData.ToBytes().Length); break; case ConnectionType.Hub: Logger.Instance.Log("ConnectionType is [Hub]"); break; } }