Пример #1
0
        /**Se escribe una objeto cubeta para la organización Hash Estatica*/ 
        public void EscribeCubetaHashEstatia(Cubeta cubeta)
        {
            bw.BaseStream.Seek(cubeta.getDir(), SeekOrigin.Begin);

            bw.Write(cubeta.getDir());
            bw.Write(cubeta.getTamaño());
            bw.Write(cubeta.getNumDirBloques());
            bw.Write(cubeta.getSigCubeta());

            for (int i = 0; i < cubeta.getTamaño(); bw.Write(cubeta.getAtDirBloque(i)), i++) ;
        }
Пример #2
0
        private bool ExisteDireccion(Cubeta cubeta, int pos, CBloque b)
        {
            bool res = true;

            if (cubeta.getAtDirBloque(pos) == -1)
            {
                cubeta.incNumDirBloques();
                getArchivo().EscribeCubetaHashEstatia(cubeta);
                cubeta.setAtDirBloque(pos, getArchivo().ENDF());
                getArchivo().EscribeBloque(b, getArchivo().ENDF());
                res = false;
            }

            return (res);
        }
Пример #3
0
        private bool RegEliminado(Cubeta cubeta, CBloque b, int pC)
        {
            CBloque bAux;
            bool res = true;
            int posOrg = pC;
            
            while (true)
            {
                 bAux = getArchivo().leerBloque(cubeta.getAtDirBloque(pC), b.getTamBlo());
                  
                 if ( bAux != null && (b.ComparateTo(bAux) == 0))
                       break;
                 else
                 {
                     pC++;
                     if (pC == cubeta.getTamaño())
                          pC = 0;

                     if (pC == posOrg)
                     {
                            res = false;
                            break;
                     }
                  }
            }
            
            if (res == true)
            {
                cubeta.setAtDirBloque(pC, -1);
                cubeta.decNumDirBloques();
                getArchivo().EscribeCubetaHashEstatia(cubeta);
            }
            
            return (res);
        }
Пример #4
0
        private int Repetidos(CBloque b, Cubeta cubeta)
        {
            CBloque bAux;

            for (int i = 0; i < cubeta.getTamaño(); i++)
            {
                bAux = getArchivo().leerBloque(cubeta.getAtDirBloque(i), b.getTamBlo());

                if (bAux != null && (b.ComparateTo(bAux) == 0))
                    return (3);
            }
            return (1);
        }