示例#1
0
        public Message processingMessage(Message msg)
        {
            //Vorhandenen Client identifizieren
            Boolean vorhanden      = false;
            int     vorhandenIndex = -1;

            for (int i = 0; i < Data.Devices.Count; i++)
            {
                if (msg.sourceIP.Equals(Data.Devices[i].IP))
                {
                    vorhanden      = true;
                    vorhandenIndex = i;
                }
            }
            //Device hinzufügen
            if (!vorhanden)
            {
                Device dev = new Device(msg.sourceIP, Convert.ToString(msg.sourcePort));
                loadDeviceInfos(dev, msg);
                Data.Devices.Add(dev);
                ((UIMainWindow)Owner).OnStatusEvent("Ein neuer Client mit der IP " + msg.sourceIP + " hat sich angemeldet");
            }
            else
            {
                Data.Devices[vorhandenIndex].Login();
                ((UIMainWindow)Owner).OnStatusEvent("Ein bekannter Client (" + Data.Devices[vorhandenIndex].Name + ") hat sich wieder angemeldet");
            }
            ((UIMainWindow)Owner).OnUpdateEvent();

            Message answer = null;

            //Antwortauswertung ======================================
            XmlDocument xml    = new XmlDocument();
            Boolean     logout = false;

            try
            {
                xml.LoadXml(msg.Msg);
                if (xml.InnerXml.Equals("<logout />"))
                {
                    logout = true;
                }
            }
            catch (Exception ef)
            {
                xml = null;
            }

            //Logouterkennung
            if (xml != null && logout)
            {
                for (int i = 0; i < Data.Devices.Count; i++)
                {
                    if (msg.sourceIP.Equals(Data.Devices[i].IP))
                    {
                        Data.Devices[i].Logout();
                        ((UIMainWindow)Owner).OnUpdateEvent();
                        ((UIMainWindow)Owner).OnStatusEvent("Der Client (" + Data.Devices[i].Name + ") hat sich abgemeldet");
                    }
                }
            }



            msg.answerMessage("angekommen");

            return(answer);
        }