Ejemplo n.º 1
0
        /**Escribe un objeto de la clase CEntrada utilizado en la organizacion dinamica*/
        public void EscribeEntrada(CEntrada e)
        {
            bw.BaseStream.Seek(e.getDir(), SeekOrigin.Begin);

            bw.Write(e.getDir());
            bw.Write(e.getID());
            bw.Write(e.getDirCubeta());
            bw.Write(e.getEspejo());
            bw.Write(e.getSigEntrada());
        }
Ejemplo n.º 2
0
        /**´Méetodo principal para llevar a cabo la inserción de algun bloque*/
        public bool Alta_HashDinamica(CNodoEntidad e, CBloque b)
        {
            /**
             * \param e Entidad a la que pertrnece el bloque
             * \param b Bloque Nuevo bloque a insertar
             * \return Retorna Falso(Si tuvo exito), True(Si ya existe el bloque alguna cubeta)
             * */
            CCubeta cubetaAux;
            CEntrada entradaAux;
            bool res = false;

            if (e.getApCabDatos() == -1)
            {
                tHashExt = new CTablaHashExt(); 
                cubetaAux = new CCubeta(-1, TAM_CUBETA); 
                entradaAux = new CEntrada(cubetaAux, -1);
                
                tHashExt.insEntrada(entradaAux);

                cubetaAux.setDir(getArchivo().ENDF());
                getArchivo().EscribeCubeta(cubetaAux);

                entradaAux.setDirCubeta(cubetaAux.getDir());
                entradaAux.setDir(getArchivo().ENDF());
                getArchivo().EscribeEntrada(entradaAux);

                tHashExt.setCabEntradas(entradaAux.getDir());
                tHashExt.setDir(getArchivo().ENDF());
                getArchivo().EscribeTablaHashExt(tHashExt);

                e.setApCabDatos(tHashExt.getDir());
                getArchivo().escribeEntidad(e, e.getDir());
            }
            else
                tHashExt = getArchivo().LeerTablaHashExt(e.getApCabDatos());

            b.setDir(getArchivo().ENDF());
         
            if ((res = InsBloque(b)) == false)
            {
                tHashExt.incNumReg();
                getArchivo().EscribeTablaHashExt(tHashExt);
            }

            return (res);
        }
Ejemplo n.º 3
0
 /**Se incrementa la tabla de direccionesa 2(i)*/
 public void Incrementate(CArchivo file)
 { 
     CEntrada nueva, aux, aux2;
     int numEntradas, idAux;
     
     numEntradas = listaEntradas.Count;
  
     for (int i = 0; i < numEntradas; i++)
     {
         aux = getAtEntrada(i);
         idAux = aux.getID();
         nueva = new CEntrada(aux.getCubeta(), getAtEntrada(getListEntradas().Count - 1).getID() + 1, file.ENDF());
         insEntrada(nueva);
         file.EscribeEntrada(nueva);
         aux2 = getAtEntrada(getListEntradas().Count - 2);
         aux2.setSigEntrada(nueva.getDir());
         file.EscribeEntrada(aux2);
     }
     
     EstableceEspejos(file);//Se actulizan los espejos
     file.EscribeTablaHashExt(this);
 }