Exemplo n.º 1
0
//! Fermeture (destruction) du cache.
Cache_Error Cache_Close(struct Cache *pcache)
{
	Cache_Sync(pcache);
	Strategy_Close(pcache);
	
	fclose(pcache->fp);
	
	for(struct Cache_Block_Header *h = pcache->headers; h < (pcache->headers + pcache->nblocks); h++)
		free(h->data);

	free(pcache->headers);
	pcache = NULL;
	
	return CACHE_OK;
}
Exemplo n.º 2
0
/**
*Détruit le cache pointé par pcache : synchronise le cache et le fichier grâce à Cache_Sync() ,
*ferme le fichier et détruit toutes les structures de données du cache.
**/
Cache_Error Cache_Close(struct Cache *pcache){

	Cache_sync(pcache);
//fermer ce qu'il faut fermer 
	fclose(pcache->fp);//ferme le fichier
//free tout les struct
	for(int i =0; i<nblocks;i++){

		free(pcache->headers[i].data;
	}
	pcache=pcache->headers=NULL;
	free(pcache->headers);
	free(pcache);
	Strategy_Close(pcache->pstrategy);
	return CACHE_OK;
}
Exemplo n.º 3
0
/*!
 * \ingroup cache_interface
 *
 * Cette fonction ferme et détruit le cache :
 *    - Synchronisation du cache.
 *    - Déallocation des entetes de blocs et des blocs eux-memes.
 *    - Déallocation du nom de fichier.
 *    - Déallocation du cache lui-même
 *
 * \param pcache un pointeur sur le cache à fermer
 * \return le code d'erreur
 */
Cache_Error Cache_Close(struct Cache *pcache)
{
    int ib;

    /* Synchronisation */
    Cache_Sync(pcache);

    /* Fermeture de la stratégie */
    Strategy_Close(pcache);

    /* Déallocation des blocks */ 
    for (ib = 0; ib < pcache->nblocks; ib++)
        free(pcache->headers[ib].data);   

    /* Déallocation des entêtes et du nom de fichier */
    free(pcache->headers);
    free(pcache->file);

    /* Déallocation du cache lui-même */
    free(pcache);

    return CACHE_OK;
}