public Optical_Entry FromBytesToEntry(byte[] bytes)
        {
            Optical_Entry optical = new Optical_Entry();

            optical.inPort    = (ushort)((bytes[11] << 8) + bytes[10]);
            optical.startSlot = BitConverter.ToInt32(bytes, 0);
            optical.lastSlot  = BitConverter.ToInt32(bytes, 4);
            optical.outPort   = (ushort)((bytes[9] << 8) + bytes[8]);
            return(optical);
        }
        public Optical_Entry FindOpticalEntry(DataStream dataStream)
        {
            Optical_Entry optEntry = null;

            foreach (Optical_Entry item in Optical_Table)
            {
                if (dataStream.currentPort == item.inPort && dataStream.firstFrequencySlot == item.startSlot && dataStream.lastFrequencySlot == item.lastSlot)
                {
                    optEntry = item;
                    break;
                }
            }
            return(optEntry);
        }
Esempio n. 3
0
        public void WaitForCommands()
        {
            while (true)
            {
                String data = null;

                // Domain będzie aktualizował te optical entry

                SocketToDomain.Receive(bufferForManagement);// from CC in management we have to check whether it is possible to take requested capacity
                Console.WriteLine("Added123");
                Optical_Entry opticalEntry = null;
                if (Encoding.ASCII.GetString(bufferForManagement.ToList().GetRange(0, 3).ToArray()).Equals("ACK"))
                {
                    Console.WriteLine("Added123456");
                    opticalEntry = packageHandler.FromBytesToEntry(bufferForManagement.ToList().GetRange(3, 12).ToArray());
                    packageHandler.Optical_Table.Add(opticalEntry);
                    Console.WriteLine("Added");
                }
                //Optical_Entry opticalEntry = packageHandler.FromBytesToEntry(bufferForManagement); //
                int k = 0;


                foreach (var link in linkResources)
                {
                    if (link.port == opticalEntry.outPort)
                    {
                        for (int j = opticalEntry.startSlot; j <= opticalEntry.lastSlot; j++)
                        {
                            link.slots[j] = false;
                        }
                        break;
                    }
                }

                //SocketToDomain.Send(Encoding.ASCII.GetBytes("G8 CONF MY M8")); // ack for Domain- odsyłamy do Domaina że j

                // SocketToDomain.Send(Encoding.ASCII.GetBytes("G8 CONF MY M8"));



                Console.WriteLine(this.Name + ": [" + DateTime.UtcNow.ToString("HH:mm:ss.fff",
                                                                               CultureInfo.InvariantCulture) + "] " + "I got new configuration!!!");

                packageHandler.displayTables();
                Console.WriteLine(this.Name + ": [" + DateTime.UtcNow.ToString("HH:mm:ss.fff",
                                                                               CultureInfo.InvariantCulture) + "] " + "I updated my MPLS tables! :) ");
            }
        }
        public void handlePackage(DataStream dataStream)
        {
            Optical_Entry optical = FindOpticalEntry(dataStream);

            dataStream.currentPort = optical.outPort;
        }