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); } } }
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(); }
//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); } }