Exemple #1
0
const bool HardDisk::LoadFile_fromHardDisk(const std::string& cartella, const std::string& nomefile, Page& page_out){
	if(page_out.mem_pointer!=NULL){
		this->last_error="HD: E' stata provata a caricare un'area di memoria già utilizzata";
	}else{
		//verifica che il file sia già presente nelle caches del sistema
		if(Manager_Caches::Get_Instance().CheckPage(cartella,nomefile,page_out)==true){
			return true;
		}
		//--------------------------------------------------------------
		std::string pathname_complete;
		if(cartella.size()>0){
			pathname_complete=cartella+'/'+nomefile;
		}else{
			pathname_complete=nomefile;
		}
		if(HardDisk::File_Exist(pathname_complete)==false){
			this->last_error="HD: Impossibile trovare la risorsa richiesta!\n"
				" Risorsa: ["+cartella+"/"+nomefile+"]";
		}else{
			page_out.mem_pointer=HardDisk::_load_tofile(page_out.mem_size,pathname_complete);
			if(page_out.mem_pointer==NULL){
				this->last_error="HD: Impossibile leggere l'area di memoria richiesta!";
			}else{
				if(De_Encoder::Get_Instance().DecodificaPagina(page_out)==false){
					this->last_error="HD: Impossibile effettuare la decodificazione della risorsa richiesta";
					page_out.FreeMemory();
				}else{
					//inserisco nelle caches del sistema!
					Manager_Caches::Get_Instance().AddCache(cartella,nomefile,page_out);
					//-----------------------
					return true;
				}
			}
		}
	}
	return false;
}