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; }