//Dodaje pozycję do VCArray, pobiera inty jako poszczególne wartości //WAŻNE - dodaje wpis 'w obie strony' //jeśli taki wpis już jest - usuwa stary wpis (też w obie strony) i go zastępuje public void addEntry(int keyPort, int keyVPI, int keyVCI, int valuePort, int valueVPI, int valueVCI) { PortVPIVCI key = new PortVPIVCI(keyPort, keyVPI, keyVCI); PortVPIVCI value = new PortVPIVCI(valuePort, valueVPI, valueVCI); if (VCArray.ContainsKey(key)) { PortVPIVCI temp; SetText("Zmieniam stary klucz VCArray na [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); SetText("Zmieniam stary klucz VCArray na [" + value.port + ";" + value.VPI + ";" + value.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.TryGetValue(key, out temp); if (temp != null) { VCArray.Remove(temp); } VCArray.Remove(key); VCArray.Add(key, value); VCArray.Add(value, key); } else { SetText("Dodaję wpis [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); SetText("Dodaję wpis [" + value.port + ";" + value.VPI + ";" + value.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.Add(key, value); VCArray.Add(value, key); } }
private void addEntryButton_Click(object sender, EventArgs e) { try { PortVPIVCI inValue = new PortVPIVCI(int.Parse(inPortTextBox.Text), int.Parse(inVPITextBox.Text), int.Parse(inVCITextBox.Text)); PortVPIVCI outValue = new PortVPIVCI(int.Parse(outPortTextBox.Text), int.Parse(outVPITextBox.Text), int.Parse(outVCITextBox.Text)); addSingleEntry(inValue, outValue); } catch {} inPortTextBox.Clear(); inVPITextBox.Clear(); inVCITextBox.Clear(); outPortTextBox.Clear(); outVPITextBox.Clear(); outVCITextBox.Clear(); }
//usuwa pojedynczy wpis public void removeSingleEntry(PortVPIVCI key) { if (VCArray.ContainsKey(key)) { PortVPIVCI temp = null; VCArray.TryGetValue(key, out temp); SetText("Usuwam klucz w VCArray [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "]\n"); VCArray.Remove(key); } else { SetText("Nie ma takiego klucza\n"); } }
//dodaje wpis w JEDNĄ stronę public void addSingleEntry(PortVPIVCI key, PortVPIVCI value) { if (VCArray.ContainsKey(key)) { SetText("Zmieniam stary klucz VCArray na [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); VCArray.Remove(key); VCArray.Add(key, value); } else { SetText("Dodaję wpis [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); VCArray.Add(key, value); } }
//Dodaje pozycję do VCArray, pobiera inty jako poszczególne wartości //WAŻNE - dodaje wpis 'w jedna strone' public void addSingleEntry(int keyPort, int keyVPI, int keyVCI, int valuePort, int valueVPI, int valueVCI) { PortVPIVCI key = new PortVPIVCI(keyPort, keyVPI, keyVCI); PortVPIVCI value = new PortVPIVCI(valuePort, valueVPI, valueVCI); if (VCArray.ContainsKey(key)) { SetText("Zmieniam stary klucz VCArray na [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); VCArray.Remove(key); VCArray.Add(key, value); } else { SetText("Dodaję klucz VCArray na [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); VCArray.Add(key, value); } }
//usuwa oba wpisy, jak się nie uda to tylko jeden public void removeEntry(int keyPort, int keyVPI, int keyVCI) { PortVPIVCI key = new PortVPIVCI(keyPort, keyVPI, keyVCI); if (VCArray.ContainsKey(key)) { PortVPIVCI temp = null; VCArray.TryGetValue(key, out temp); if (temp != null) { SetText("Usuwam klucz w VCArray [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.Remove(temp); } SetText("Usuwam klucz w VCArray [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "]\n"); VCArray.Remove(key); } else { removeSingleEntry(key); } }
private void sender() { while (isConnectedToCloud) { if (queuedReceivedPackets.Count != 0) { if (queuedReceivedPackets.TryDequeue(out processedPacket)) { if (processedPacket != null) { PortVPIVCI VCConKey = new PortVPIVCI(); PortVPIVCI VPConKey = new PortVPIVCI(); PortVPIVCI value = new PortVPIVCI(); VCConKey.port = processedPacket.port; VCConKey.VPI = processedPacket.VPI; VCConKey.VCI = processedPacket.VCI; VPConKey.port = processedPacket.port; VPConKey.VPI = processedPacket.VPI; VPConKey.VCI = 0; NetworkStream networkStream = new NetworkStream(cloudSocket); if (processedPacket.VPI == -1 && processedPacket.VCI == -1) { SetText("Wysyłam pakiet sygnalizacyjny na porcie " + processedPacket.port + "\n"); BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { if (VCArray.ContainsKey(VCConKey)) { if (VCArray.TryGetValue(VCConKey, out value)) { SetText("Przekierowywanie [" + processedPacket.port + ";" + processedPacket.VPI + ";" + processedPacket.VCI + "]->[" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); processedPacket.VPI = value.VPI; processedPacket.VCI = value.VCI; processedPacket.port = value.port; BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { SetText("Coś poszło nie tak przy przepisywaniu wartości VPI i VCI z VCArray\n"); } } else if (VCArray.ContainsKey(VPConKey)) { if (VCArray.TryGetValue(VPConKey, out value)) { SetText("Przekierowywanie [" + processedPacket.port + ";" + processedPacket.VPI + ";" + processedPacket.VCI + "]->[" + value.port + ";" + value.VPI + ";" + processedPacket.VCI + "]\n"); processedPacket.VPI = value.VPI; processedPacket.port = value.port; // VCI bez zmian BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { SetText("Coś poszło nie tak przy przepisywaniu wartości VPI i VCI z VCArray\n"); } } else { SetText("Pakiet stracony - brak odpowiedniego wpisu w tablicy\n"); } } } } } Thread.Sleep(50); } }
public void connectionBroken(int port, int vpi, int vci) { if (this.InvokeRequired) { ConnectionBrokenCallback d = new ConnectionBrokenCallback(connectionBroken); this.Invoke(d, new object[] { port, vpi, vci }); } else { PortVPIVCI temp = new PortVPIVCI(port, vpi, vci); String tempName = ""; List<PortVPIVCI> tempList = new List<PortVPIVCI>(); foreach (String name in VCArray.Keys) { List<PortVPIVCI> t; VCArray.TryGetValue(name, out t); if (t.Contains(temp)) { tempName = name; t.Remove(temp); tempList = t; } } VCArray.Remove(tempName); disconnectWithClient.Enabled = true; sendText.Enabled = false; SetText("Połączenie z " + tempName + " zostało zerwane, przepustowość wynosi teraz "+ tempList.Count*2 +"Mbit/s\n"); } }
private void receiver() { try { if (networkStream == null) { networkStream = new NetworkStream(cloudSocket); //tworzy string 'client ' i tu jego nazwę String welcomeString = "Client " + username + " " + myAddress.ToString(); //tworzy tablicę bajtów z tego stringa byte[] welcomeStringBytes = AAL.GetBytesFromString(welcomeString); //wysyła tą tablicę bajtów streamem networkStream.Write(welcomeStringBytes, 0, welcomeStringBytes.Length); } BinaryFormatter bf = new BinaryFormatter(); receivedPacket = (Packet.ATMPacket)bf.Deserialize(networkStream); int tempSeq = 0; PortVPIVCI temp = new PortVPIVCI(receivedPacket.port, receivedPacket.VPI, receivedPacket.VCI); String tempName = ""; bool isNameFound = false; foreach (String name in VCArray.Keys) { List<PortVPIVCI> t = new List<PortVPIVCI>(); VCArray.TryGetValue(name, out t); if (t.Contains(temp)) { tempName = name; isNameFound = true; } } foreach (String name in NEWVCARRAY.Keys) { List<PortVPIVCI> t = new List<PortVPIVCI>(); NEWVCARRAY.TryGetValue(name, out t); if (t.Contains(temp)) { tempName = name; isNameFound = true; } } if (receivedPacket.VCI == -1 && receivedPacket.VPI == -1) { LRM.OdczytajATM(receivedPacket); } else { /* if (isNameFound) { SetText(tempName+ " : "); } else SetText("[" + receivedPacket.port + ";" + receivedPacket.VPI + ";" + receivedPacket.VCI + "] : "); */ // gdy wiadomość zawarta jest w jednym pakiecie if (receivedPacket.PacketType == Packet.ATMPacket.AALType.SSM) { if (isNameFound) { SetText(tempName + " : "); } else SetText("[" + receivedPacket.port + ";" + receivedPacket.VPI + ";" + receivedPacket.VCI + "] : "); SetText(Packet.AAL.getStringFromPacket(receivedPacket) + "\n"); tempMid = 0; } else if (receivedPacket.PacketType == Packet.ATMPacket.AALType.BOM) { if (isNameFound) { SetText(tempName + " : "); } else SetText("[" + receivedPacket.port + ";" + receivedPacket.VPI + ";" + receivedPacket.VCI + "] : "); tempSeq = 0; tempMid = receivedPacket.AALMid; SetText(Packet.AAL.getStringFromPacket(receivedPacket)); /* queuedReceivedPackets.Clear(); queuedReceivedPackets.Enqueue(receivedPacket); */ } else if (receivedPacket.PacketType == Packet.ATMPacket.AALType.COM) { if (receivedPacket.AALMid == tempMid) { //sprawdza kolejnosc AALSeq //usun tempmid if (receivedPacket.AALSeq == ++tempSeq) { SetText(Packet.AAL.getStringFromPacket(receivedPacket)); //queuedReceivedPackets.Enqueue(receivedPacket); } else { //SetText("\nPakiet ma inny AALSeq niż powinien mieć, pakiety przyszły w innej kolejności!\n"); SetText(Packet.AAL.getStringFromPacket(receivedPacket)); } } else { //SetText("\nPakiet z innej wiadomości! Inne AALMid!\n"); SetText("\n" + tempName + " : " + Packet.AAL.getStringFromPacket(receivedPacket)); } } else if (receivedPacket.PacketType == Packet.ATMPacket.AALType.EOM) { /* queuedReceivedPackets.Enqueue(receivedPacket); SetText(Packet.AAL.getStringFromPackets(queuedReceivedPackets)); queuedReceivedPackets.Clear(); */ SetText(Packet.AAL.getStringFromPacket(receivedPacket) + "\n"); tempSeq = 0; tempMid = 0; } } //networkStream.Close(); Thread.Sleep(100); receiver(); } catch (Exception e){ if (isDisconnect) { SetText("Rozłączam się z chmurą!\n"); isDisconnect = false; networkStream = null; } else { SetText("Coś poszło nie tak : " + e.Message + "\n"); cloudSocket = null; cloudEndPoint = null; networkStream = null; isConnectedToCloud = false; } } }
private void sender() { while(isConnectedToCloud) { if (queuedReceivedPackets.Count != 0) { if (queuedReceivedPackets.TryDequeue(out processedPacket)) { if (processedPacket != null) { PortVPIVCI VCConKey = new PortVPIVCI(); PortVPIVCI VPConKey = new PortVPIVCI(); PortVPIVCI value = new PortVPIVCI(); VCConKey.port = processedPacket.port; VCConKey.VPI = processedPacket.VPI; VCConKey.VCI = processedPacket.VCI; VPConKey.port = processedPacket.port; VPConKey.VPI = processedPacket.VPI; VPConKey.VCI = 0; NetworkStream networkStream = new NetworkStream(cloudSocket); if (processedPacket.VPI == -1 && processedPacket.VCI == -1) { SetText("Wysyłam pakiet sygnalizacyjny na porcie " + processedPacket.port + "\n"); BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { if (VCArray.ContainsKey(VCConKey)) { if (VCArray.TryGetValue(VCConKey, out value)) { SetText("Przekierowywanie [" + processedPacket.port + ";" + processedPacket.VPI + ";" + processedPacket.VCI + "]->[" + value.port + ";" + value.VPI + ";" + value.VCI + "]\n"); processedPacket.VPI = value.VPI; processedPacket.VCI = value.VCI; processedPacket.port = value.port; BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { SetText("Coś poszło nie tak przy przepisywaniu wartości VPI i VCI z VCArray\n"); } } else if (VCArray.ContainsKey(VPConKey)) { if (VCArray.TryGetValue(VPConKey, out value)) { SetText("Przekierowywanie [" + processedPacket.port + ";" + processedPacket.VPI + ";" + processedPacket.VCI + "]->[" + value.port + ";" + value.VPI + ";" + processedPacket.VCI + "]\n"); processedPacket.VPI = value.VPI; processedPacket.port = value.port; // VCI bez zmian BinaryFormatter bformatter = new BinaryFormatter(); bformatter.Serialize(networkStream, processedPacket); networkStream.Close(); } else { SetText("Coś poszło nie tak przy przepisywaniu wartości VPI i VCI z VCArray\n"); } } else { SetText("Pakiet stracony - brak odpowiedniego wpisu w tablicy\n"); } } } } } Thread.Sleep(50); } }
//usuwa pojedynczy wpis public void removeSingleEntry(int keyPort, int keyVPI, int keyVCI) { PortVPIVCI key = new PortVPIVCI(keyPort, keyVPI, keyVCI); if (VCArray.ContainsKey(key)) { PortVPIVCI temp = null; VCArray.TryGetValue(key, out temp); SetText("Usuwam klucz w VCArray [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "]\n"); VCArray.Remove(key); } else SetText("Nie ma takiego klucza\n"); }
//usuwa oba wpisy, jak się nie da to usuwa tylko jeden public void removeEntry(PortVPIVCI key) { if (VCArray.ContainsKey(key) && VCArray.ContainsValue(key)) { PortVPIVCI temp = null; VCArray.TryGetValue(key, out temp); if (temp != null) { SetText("Usuwam klucz w VCArray [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.Remove(temp); } SetText("Usuwam klucz w VCArray [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + temp.port + ";" + temp.VPI + ";" + temp.VCI + "]\n"); VCArray.Remove(key); } else removeSingleEntry(key); }
//Dodaje pozycję do VCArray, pobiera inty jako poszczególne wartości //WAŻNE - dodaje wpis 'w obie strony' //jeśli taki wpis już jest - usuwa stary wpis (też w obie strony) i go zastępuje public void addEntry(int keyPort, int keyVPI, int keyVCI, int valuePort, int valueVPI, int valueVCI) { PortVPIVCI key = new PortVPIVCI(keyPort, keyVPI, keyVCI); PortVPIVCI value = new PortVPIVCI(valuePort, valueVPI, valueVCI); if (VCArray.ContainsKey(key)) { PortVPIVCI temp; SetText("Zmieniam stary klucz VCArray na [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI +"]\n"); SetText("Zmieniam stary klucz VCArray na [" + value.port + ";" + value.VPI + ";" + value.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.TryGetValue(key, out temp); if (temp != null) { VCArray.Remove(temp); } VCArray.Remove(key); VCArray.Add(key, value); VCArray.Add(value, key); } else { SetText("Dodaję wpis [" + key.port + ";" + key.VPI + ";" + key.VCI + "] -> [" + value.port + ";" + value.VPI + ";" + value.VCI +"]\n"); SetText("Dodaję wpis [" + value.port + ";" + value.VPI + ";" + value.VCI + "] -> [" + key.port + ";" + key.VPI + ";" + key.VCI + "]\n"); VCArray.Add(key, value); VCArray.Add(value, key); } }