def boot(): global inodes global availableDisc f = DiscDriver.openIndexFile() #Saco la primera linea, solo dice IN: y no es necesaria para nada f.readline() # Saco la ubicacion de los inodos y los creo, guardandolos en un hash for line in f: line = line.strip() if(line == "NO:"): break inode=Inode(line) inodes[inode.name]=inode #Guardo todos los bloques disponibles availableDisc.extend(f) f.close() for filename in DiscDriver.getIndexFiles(): f = open(filename) availableDisc.extend(f) f.close() #Elimino simbolos blancos para evitar futuros problemas availableDisc=[item.strip() for item in availableDisc]
def __init__(self, filename): self.filename = filename f = DiscDriver.openFile(self.filename) #Extraigo metadata.....Definir bien y eliminar simbolos blancos self.name = self.CleanName(f.readline()) lines = f.readlines() self.available_space_in_last_block = int(lines[1].strip()) self.blocks = lines[2:] f.close() #Limpio self.blocks=[item.strip() for item in self.blocks]
def AddNewElement(self, element): print "AVAILABLE SPACE ", self.available_space_in_last_block if self.available_space_in_last_block <= 0: #CREO NUEVO BLOCK Y LO AGREGO A ESTE INODO new_block = Disc.getFirstAvailableBlock() print "NEW BLOCK", new_block if new_block != -1: self.blocks.append(new_block) DiscDriver.addBlockToFile(self.filename, new_block) self.available_space_in_last_block = 513 else: return False print self.blocks print len(self.blocks) DiscDriver.appendToFile(element, self.blocks[-1]) #CUANTO ES EL TAMAÑO DEL ELEMENTO?!?!?!?!?!?!! self.available_space_in_last_block -= 3 DiscDriver.updateFreeSpaceInInode(self.filename, self.available_space_in_last_block) return True