private bool AddAtmCellToOutputPort(AtmCell cell, int portNumber)
 {
     foreach (var outPort in OutputPorts)
     {
         if (portNumber == outPort.GetPortNumber())
         {
             outPort.AddAtmCell(cell);
             return(true);
         }
     }
     return(false);
 }
        /* Metoda dodająca komórkę ATM do bufora pola komutacyjnego*/

        public void AddAtmCellToInputPort(AtmCell cell, int portNumber)
        {
            foreach (var inPort in _inputPorts)
            {
                if (portNumber == inPort.GetPortNumber())
                {
                    inPort.AddAtmCell(cell);
                    lock (_matrixThread) {
                        Monitor.Pulse(_matrixThread);
                    }

                    return;
                }
            }
        }
        /* Metoda zmieniająca VPI, VCI na podstawie tabeli */

        public bool Commute(AtmCell cell, int inPortNumber)
        {
            var row = _commutationTable.FindRow(cell.Vpi, cell.Vci, inPortNumber);

            if (row != null)
            {
                //Console.Write("["+DateTime.Now + "] Changed inVpi: " + cell.Vpi + " inVci: "+cell.Vci);
                cell.Vpi = row.GetOutVpi();
                if (row.GetOutVci() != -1)
                {
                    cell.Vci = row.GetOutVci();
                }

                //OnUpdateState(" outVpi: " + cell.Vpi + " outVci: " + cell.Vci);
                return(AddAtmCellToOutputPort(cell, row.GetOutPort()));
            }
            //else
            // OnUpdateState("WYWALILO BLAD");
            return(false);
        }
Exemplo n.º 4
0
 public void AddAtmCell(AtmCell cell)
 {
     _lastAddTime = DateTime.Now;
     _atmCells.Enqueue(cell);
 }