Ejemplo n.º 1
0
        public static EnlaceDijkstra Clone(this EnlaceDijkstra enlace)
        {
            EnlaceDijkstra newModel = new EnlaceDijkstra();

            newModel.idEnlace = enlace.idEnlace;
            newModel.idProyecto = enlace.idProyecto;
            newModel.cNombre = enlace.cNombre;
            newModel.idAfinidad = enlace.idAfinidad;
            newModel.idRouterA = enlace.idRouterA;
            newModel.idRouterB = enlace.idRouterB;
            newModel.nBandwidth = enlace.nBandwidth;
            newModel.nBandwidthDisponible = enlace.nBandwidthDisponible;
            newModel.nPesoAdministrativo = enlace.nPesoAdministrativo;
            newModel.targetA = enlace.targetA;
            newModel.targetB = enlace.targetB;

            return newModel;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Genera una lista de Enlaces en base a la lista de Nodos Dijkstra
        /// </summary>
        /// <param name="nodeList"></param>
        /// <returns></returns>
        public static List<EnlaceDijkstra> ToEnlaces(this List<NodoDijkstra> nodePathList, List<EnlaceDijkstra> linkPathList)
        {
            //Proyecto tempModel = new Proyecto(idProyecto);
            List<EnlaceDijkstra> listaEnlacesLSP = new List<EnlaceDijkstra>();

            //Genera una lista de Enlaces en base a la lista de Nodos Dijkstra
            for (int cont = 0; cont < nodePathList.Count; ++cont)
            {
                int curr_n = cont;
                int next_n = cont + 1;

                if (next_n < nodePathList.Count)
                {
                    int curr_routerid = nodePathList[curr_n].idRouter;
                    int next_routerid = nodePathList[next_n].idRouter;

                    EnlaceDijkstra temp = new EnlaceDijkstra();
                    temp = linkPathList.Find(
                                x => (x.idRouterA == curr_routerid && x.idRouterB == next_routerid) ||
                                    (x.idRouterB == curr_routerid && x.idRouterA == next_routerid));
                    if (temp != null)
                    {
                        EnlaceDijkstra justforBW = nodePathList[curr_n].listaEnlacesDijkstra.Find(
                                x => (x.idRouterA == curr_routerid && x.idRouterB == next_routerid) ||
                                    (x.idRouterB == curr_routerid && x.idRouterA == next_routerid));

                        temp.nBandwidthDisponible = justforBW.nBandwidthDisponible;
                        listaEnlacesLSP.Add(temp);
                        //EnlaceDijkstra new_temp = new EnlaceDijkstra();
                        //new_temp = nodePathList[cont].listaEnlacesDijkstra.Find(x => x.idEnlace == temp.idEnlace);
                        //if (new_temp != null)
                        //    listaEnlacesLSP.Add(new_temp);
                    }

                }
            }
            return listaEnlacesLSP;
        }
Ejemplo n.º 3
0
        public static List<EnlaceDijkstra> SelectListaEnlacesRouter(int idProyecto, int idRouter)
        {
            List<EnlaceDijkstra> listaEnlaces = new List<EnlaceDijkstra>();

            Data.dsEnrutamientoTableAdapters.EnlacesRouterTableAdapter Adapter = new Data.dsEnrutamientoTableAdapters.EnlacesRouterTableAdapter();
            Data.dsEnrutamiento.EnlacesRouterDataTable dt = Adapter.SelectEnlacesRouter(idProyecto, idRouter);

            foreach (var dr in dt)
            {
                EnlaceDijkstra temp = new EnlaceDijkstra();
                temp.idEnlace = dr.idEnlace;
                temp.idProyecto = dr.idProyecto;
                if (!dr.IscNombreNull())
                    temp.cNombre = dr.cNombre.Trim();
                if (!dr.IsidRouterANull())
                    temp.idRouterA = dr.idRouterA;
                if (!dr.IsidRouterBNull())
                    temp.idRouterB = dr.idRouterB;
                if (!dr.IsnBandwidthNull())
                    temp.nBandwidth = dr.nBandwidth;
                if (!dr.IsnPesoAdministrativoNull())
                    temp.nPesoAdministrativo = dr.nPesoAdministrativo;
                if (!dr.IsidAfinidadNull())
                    temp.idAfinidad = dr.idAfinidad;
                temp.nBandwidthDisponible = dr.nBandwidth;

                //Solo para uso del algoritmo de Dijkstra
                temp.target = new NodoDijkstra();
                if (temp.idRouterA != idRouter)
                    temp.target = new NodoDijkstra(temp.idRouterA, idProyecto);
                else if (temp.idRouterB != idRouter)
                    temp.target = new NodoDijkstra(temp.idRouterB, idProyecto);

                listaEnlaces.Add(temp);
            }

            return listaEnlaces;
        }
Ejemplo n.º 4
0
        public static List<EnlaceDijkstra> SelectListaEnlacesDijkstra(int idProyecto)
        {
            List<EnlaceDijkstra> listaEnlaces = new List<EnlaceDijkstra>();

            Data.dsTopologiaTableAdapters.EnlacesTableAdapter Adapter = new Data.dsTopologiaTableAdapters.EnlacesTableAdapter();
            Data.dsTopologia.EnlacesDataTable dt = Adapter.SelectEnlacesProyecto(idProyecto);

            foreach (var dr in dt)
            {
                EnlaceDijkstra temp = new EnlaceDijkstra();
                temp.idEnlace = dr.idEnlace;
                temp.idProyecto = dr.idProyecto;
                if (!dr.IscNombreNull())
                    temp.cNombre = dr.cNombre.Trim();
                if (!dr.IsidRouterANull())
                    temp.idRouterA = dr.idRouterA;
                if (!dr.IsidRouterBNull())
                    temp.idRouterB = dr.idRouterB;
                if (!dr.IsnBandwidthNull())
                    temp.nBandwidth = dr.nBandwidth;
                if (!dr.IsnPesoAdministrativoNull())
                    temp.nPesoAdministrativo = dr.nPesoAdministrativo;
                if (!dr.IscAfinidadNull())
                    temp.idAfinidad = dr.idAfinidad;
                if (!dr.IsnBandwidthReservadoNull())
                    temp.nBandwidthDisponible = temp.nBandwidth - dr.nBandwidthReservado;
                listaEnlaces.Add(temp);
            }

            return listaEnlaces;
        }