Ejemplo n.º 1
0
        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);
     });
 }
Ejemplo n.º 3
0
        /// <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;
     });
 }
Ejemplo n.º 5
0
        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;
            }
        }