#include "libnazgul.h" #define NONBLOCK -1 void * msgGet(msgSpace * space,int queueIndex,int option){ void * resultAddr; // on teste la possibilité de lecture sur la liste... if (option == NONBLOCK){ if (msgQueueReadTryLock(space->externId,queueIndex) <0){ NZG_ERROR("msgQueueReadTryLock",space->externId); goto ERROR; } } else { if (msgQueueReadLock(space->externId,queueIndex) <0){ NZG_ERROR("msgQueueReadLock",space->externId); goto ERROR; } } // la lecture est possible // on essaye donc de modifier la liste msgQueueProtLock(space->externId,queueIndex); msgQueueId queueId; msgQueue * queue; msgQueueIdIntern(queueId,space->externId,queueIndex); // ouvrir la file queue = msgQueueOpen(queueId); msgQueueElemId oldElemId; // recupérer l'id de l'ancien element... msgQueueElemRem(queue, oldElemId); // fermer la file msgQueueClose(queue); // on a fini de modifier la liste msgQueueProtUnlock(space->externId,queueIndex); return resultAddr; ERROR: return NULL; }