#include "libnazgul.h" #include "ids.h" /* prototypes des fonctions annexes à ne pas exporter */ int msgSpaceIdIntern(msgSpaceId dest,const msgSpaceId src ); int msgPoolDataIdIntern(msgSpaceId dest,const msgSpaceId src ); int msgPoolDataTabSemIdIntern( msgPoolSemId destSemId,const msgSpaceId externId); int msgSpaceDelete(msgSpaceId externId){ fprintf(stderr,"Deleting msgSpace with id : %s\n",externId); //int shmId; msgSpaceId nzgId; msgSpace * space; int i; if (msgSpaceIdIntern(nzgId,externId) == -1){ //TODO: message d'erreur return -1; } space = msgSpaceOpen(externId); /* TODO: supprimer chaque pool */ for (i=0;ipoolNb;i++){ msgPoolDelete(externId,i); } printf("openned successfully !\n"); printf("Unlinking DataTab... "); if (shm_unlink(space->poolDataTabId) < 0){ perror("shm_unlink"); return -1; } printf("ok\n"); printf("Unlinking DataTabSem... "); if (sem_unlink(space->poolDataTabSemId) < 0){ NZG_ERROR("sem_unlink",space->poolDataTabSemId); return -1; } printf("ok\n"); if (shm_unlink(nzgId)<0){ NZG_ERROR("shm_unlink",nzgId); goto ERROR; }; if (msgSpaceListLock()<0){ NZG_ERROR("msgSpaceListLock",""); goto ERROR; } if (msgSpaceListRem(nzgId) < 0){ NZG_ERROR("msgSpaceListRem",nzgId); goto ERROR; } if (msgSpaceListUnlock()< 0){ NZG_ERROR("msgSpaceListUnlock",""); goto ERROR; } return 0; ERROR: return -1; }