Пример #1
0
        //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);
            }
        }
Пример #2
0
 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();
 }
Пример #3
0
 //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");
     }
 }
Пример #4
0
 //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);
     }
 }
Пример #5
0
        //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);
            }
        }
Пример #6
0
        //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);
            }
        }
Пример #7
0
 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);
     }
 }
Пример #8
0
 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");
     }
 }
Пример #9
0
        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;
                }
            }
        }
Пример #10
0
 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();
 }
Пример #11
0
        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);
            }
        }
Пример #12
0
 //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");
 }
Пример #13
0
 //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);
 }
Пример #14
0
 //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);
     }
 }
Пример #15
0
 //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);
     }
 }
Пример #16
0
 //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);
     }
 }