Esempio n. 1
0
File: Node.cs Progetto: admsbk/tsst2
        private void newMessageRecived(object myObject, MessageArgs myArgs)
        {
            addLog(logs, Constants.NEW_MSG_RECEIVED + " " + myArgs.message, Constants.LOG_INFO);

            string[] fromWho = myArgs.message.Split('%');
            if (fromWho[0].Contains("C"))
            {
                string forwarded = switchTable.forwardMessage(myArgs.message);

                try
                {
                    string port = forwarded.Split('^')[0];
                    string slot = forwarded.Split('^')[1].Split('&')[0];
                    STM.ElementAt(portsOutTemp.IndexOf(port)).reserveSlot(Convert.ToInt32(slot), forwarded.Split('^')[1].Split('&')[1]);
                    addLog(logs, "slot reserved ", Constants.LOG_INFO);
                    addLog(logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                }
                catch (Exception e)
                {
                    //addLog(logs, "slot reserved before/not empty", Constants.LOG_ERROR);
                    addLog(logs, Constants.INVALID_PORT, Constants.LOG_ERROR);
                }
            }

            else if (fromWho[1].Split('/').Length > 1)
            {
                string[] slots = SynchronousTransportModule.getSlots(fromWho[1].Split(':')[1]);
                try
                {
                    int i = 0;
                    foreach (string s in slots)
                    {
                        if (s.Length != 0)
                        {
                            string forwarded = switchTable.forwardMessage(fromWho[0] + "%" + fromWho[1].Split('&')[0] + "." + i + "&" + s);
                            addLog(logs, forwarded, Constants.LOG_INFO);
                            string port = forwarded.Split('^')[0];
                            string slot = forwarded.Split('^')[1].Split('&')[0];
                            if (!port.Contains("C"))
                            {
                                STM.ElementAt(portsOutTemp.IndexOf(port)).reserveSlot(Convert.ToInt32(slot), forwarded.Split('^')[1].Split('&')[1]);
                                addLog(logs, "slot reserved ", Constants.LOG_INFO);
                                addLog(logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                            }
                            else
                            {
                                cloud.sendMessage(forwarded);
                            }
                        }
                        i++;
                    }
                }
                catch
                {
                    addLog(logs, Constants.INVALID_PORT, Constants.LOG_ERROR);
                }
            }
        }
Esempio n. 2
0
File: Node.cs Progetto: admsbk/tsst2
        private void startSending()
        {
            DispatcherTimer timer = new DispatcherTimer();

            timer.Interval = new TimeSpan(0, 0, 1);
            timer.Tick    += ((sender, e) =>
            {
                int i = 0;
                foreach (SynchronousTransportModule stm in STM)
                {
                    string tos = stm.prepareToSend().Split(':')[1];
                    if (SynchronousTransportModule.getSlots(tos) != null)
                    {
                        cloud.sendMessage(portsOutTemp[i] + "&" + stm.prepareToSend());
                        addLog(logs, stm.prepareToSend(), Constants.LOG_INFO);
                    }
                    stm.clearSTM();
                    i++;
                }
            });
            timer.Start();
        }
Esempio n. 3
0
        //mozna to przerobic na jakies bardziej obiektowe
        private void newMessageRecived(object a, MessageArgs e)
        {
            string getSenderId = null;

            try
            {
                getSenderId = clientSockets.FirstOrDefault(x => x.Value == e.ID).Key;
            }
            catch { }
            if (e.message.Contains("CP") && !getSenderId.Contains("CallControl"))
            {
                addLog(this.logs, Constants.NEW_MSG_RECEIVED + " from " + getSenderId + " " + e.message, Constants.LOG_INFO);
                try
                {
                    string[] msg         = e.message.Split('^');
                    string   forwarded   = switchBox.forwardMessage(getSenderId + "%" + msg[0] + "&" + e.message);
                    string[] getNextNode = forwarded.Split('%');
                    server.sendMessage(clientSockets[getNextNode[0]], getSenderId + "%" + getNextNode[1] + msg[1].Split('&')[1]);
                    addLog(this.logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                }
                catch
                {
                    addLog(this.logs, Constants.UNREACHABLE_DST + " " + switchBox.forwardMessage(getSenderId + "%" + e.message), Constants.LOG_ERROR);
                }
            }

            else if (e.message.Split('#').Length == 1 && e.message.Split('/').Length != 2 && e.message.Split(':').Length > 1 && !getSenderId.Contains("CallControl"))
            {
                addLog(this.logs, Constants.NEW_MSG_RECEIVED + " from " + getSenderId + " " + e.message, Constants.LOG_INFO);
                try
                {
                    string   forwarded   = switchBox.forwardMessage(getSenderId + "%" + e.message);
                    string[] getNextNode = forwarded.Split('%');
                    server.sendMessage(clientSockets[getNextNode[0]], getSenderId + "%" + getNextNode[1]);
                    addLog(this.logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                }
                catch
                {
                    addLog(this.logs, Constants.UNREACHABLE_DST + " " + switchBox.forwardMessage(getSenderId + "%" + e.message), Constants.LOG_ERROR);
                }
            }

            else if (e.message.Split('#').Length == 1 && e.message.Split('/').Length == 2 && !getSenderId.Contains("CallControl"))
            {
                string[] receivedSlots = SynchronousTransportModule.getSlots(e.message.Split('/')[0]);
                if (receivedSlots != null)
                {
                    addLog(this.logs, Constants.NEW_MSG_RECEIVED + " from " + getSenderId + " " + e.message, Constants.LOG_INFO);
                    try
                    {
                        string forwarded = switchBox.forwardMessage(getSenderId + "%" + e.message);
                        addLog(this.logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                        string[] getNextNode = forwarded.Split('%');
                        server.sendMessage(clientSockets[getNextNode[0]], getSenderId + "%" + getNextNode[1]);
                        addLog(this.logs, Constants.FORWARD_MESSAGE + " " + forwarded, Constants.LOG_INFO);
                    }
                    catch
                    {
                        addLog(this.logs, Constants.UNREACHABLE_DST + " " + switchBox.forwardMessage(getSenderId + "%" + e.message), Constants.LOG_ERROR);
                    }
                }
            }

            else if (getSenderId != null)
            {
                if (getSenderId.Contains("CallControl"))
                {
                    addLog(this.logs, Constants.NEW_MSG_RECEIVED + " from " + getSenderId + " " + e.message, Constants.LOG_INFO);
                    if (getSenderId.Contains("NetworkNode") && getSenderId.Contains("rtadd"))
                    {
                        try
                        {
                            string[] getNextNode = e.message.Split('#');
                            string   pdu         = "";
                            for (int i = 1; i < getNextNode.Length; i++)
                            {
                                pdu += "#" + getNextNode[i];
                            }
                            server.sendMessage(clientSockets[getNextNode[0]], getSenderId + "%" + pdu);
                            addLog(this.logs, Constants.FORWARD_MESSAGE + " " + getSenderId + "%" + pdu, Constants.LOG_INFO);
                        }
                        catch
                        {
                            addLog(this.logs, Constants.UNREACHABLE_DST + " ", Constants.LOG_ERROR);
                        }
                    }
                    else
                    {
                        try
                        {
                            string[] getNextNode = e.message.Split('#');
                            string   pdu         = "";
                            for (int i = 1; i < getNextNode.Length; i++)
                            {
                                pdu += "#" + getNextNode[i];
                            }
                            server.sendMessage(clientSockets[getNextNode[0]], getSenderId + "%" + pdu);
                            addLog(this.logs, Constants.FORWARD_MESSAGE + " " + getSenderId + "%" + pdu, Constants.LOG_INFO);
                        }
                        catch
                        {
                            addLog(this.logs, Constants.UNREACHABLE_DST + " ", Constants.LOG_ERROR);
                        }
                    }
                }
            }
            else
            {
                addNewClient(e.message, e);
            }
        }