*** empty log message ***
This commit is contained in:
parent
93b7b62b2e
commit
4c185ba7ef
7 changed files with 94 additions and 34 deletions
|
@ -1,6 +1,3 @@
|
|||
#ifndef _NZG_IDS
|
||||
#define _NZG_IDS 1
|
||||
|
||||
#include "libnazgul.h"
|
||||
#include "ids.h"
|
||||
|
||||
|
@ -143,7 +140,7 @@ int msgQueueElemIdIntern(
|
|||
return 0;
|
||||
}
|
||||
|
||||
int spaceListElemIdIntern(msgSpaceListElemId elemListId,msgSpaceId externId){
|
||||
int msgSpaceListElemIdIntern(msgSpaceListElemId elemListId,msgSpaceId externId){
|
||||
if (strlen(externId)>MSGSPACE_ID_LEN){
|
||||
return -1;
|
||||
}
|
||||
|
@ -158,4 +155,4 @@ int spaceListElemIdIntern(msgSpaceListElemId elemListId,msgSpaceId externId){
|
|||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
#ifndef _NZG_IDS
|
||||
#define _NZG_IDS 1
|
||||
|
||||
#include "libnazgul.h"
|
||||
|
||||
#ifdef _NZG_REALFILEID
|
||||
#define msgSpaceListId "/tmp/nzgSpaceList"
|
||||
#else
|
||||
#define msgSpaceListId "/nzgSpaceList"
|
||||
#endif
|
||||
|
||||
|
||||
/* nzg_ids.c */
|
||||
int msgSpaceIdIntern(msgSpaceId dest, const msgSpaceId src);
|
||||
int msgPoolSemIdIntern(msgPoolSemId destSemId, const msgSpaceId srcPoolId, int poolIdx);
|
||||
|
|
|
@ -59,15 +59,18 @@ typedef struct MsgSpace {
|
|||
|
||||
|
||||
typedef struct MsgSpaceListElem {
|
||||
int ownerPid;
|
||||
msgSpaceListElemId id;
|
||||
|
||||
msgSpaceId spaceId;
|
||||
msgSpaceListElemId next;
|
||||
} msgSpaceListElem;
|
||||
|
||||
typedef struct MsgSpaceList {
|
||||
msgSpaceListId id;
|
||||
|
||||
int elemCounter;
|
||||
msgSpaceListElemId first;
|
||||
msgSpaceListElemId last;
|
||||
msgSpaceListElemId headId;
|
||||
msgSpaceListElemId tailId;
|
||||
} msgSpaceList;
|
||||
|
||||
typedef struct MsgQueueElem {
|
||||
|
|
11
src/proto.h
11
src/proto.h
|
@ -34,7 +34,7 @@ int msgQueueProtSemIdIntern(msgQueueSemId dest, msgSpaceId externId, int queueId
|
|||
int msgQueueReadSemIdIntern(msgQueueSemId dest, msgSpaceId externId, int queueIdx);
|
||||
int msgQueueIdIntern(msgQueueId dest, msgSpaceId externId, int queueIdx);
|
||||
int msgQueueElemIdIntern(msgQueueElemId dest, msgQueueId src, int counter);
|
||||
int spaceListElemIdIntern(msgSpaceListElemId elemListId, msgSpaceId externId);
|
||||
int msgSpaceListElemIdIntern(msgSpaceListElemId elemListId, msgSpaceId externId);
|
||||
/* list.c */
|
||||
/* poolCreate.c */
|
||||
int msgPoolCreate(msgSpaceId externId, int poolIdx, int buffNb, int buffSize);
|
||||
|
@ -87,14 +87,23 @@ msgSpace *msgSpaceCreate(msgSpaceId externId, int queueNb, int poolNb, msgPool *
|
|||
/* spaceDelete.c */
|
||||
int msgSpaceDelete(msgSpaceId externId);
|
||||
/* spaceListAdd.c */
|
||||
int msgSpaceListAdd(msgSpaceListElemId newElemId);
|
||||
/* spaceListClose.c */
|
||||
int msgSpaceListClose(msgSpaceList *list);
|
||||
/* spaceListElemClose.c */
|
||||
int msgSpaceListElemClose(msgSpaceListElem *listElem);
|
||||
/* spaceListElemCreate.c */
|
||||
int msgSpaceListElemCreate(msgSpaceListElemId elemenListId, msgSpace *space);
|
||||
/* spaceListElemLink.c */
|
||||
/* spaceListElemOpen.c */
|
||||
void *msgSpaceListElemOpen(msgSpaceListElemId listElemId);
|
||||
/* spaceListInit.c */
|
||||
int msgSpaceListInit(void);
|
||||
/* spaceListLocking.c */
|
||||
int msgSpaceListLock(void);
|
||||
int msgSpaceListUnlock(void);
|
||||
/* spaceListOpen.c */
|
||||
void *msgSpaceListOpen(void);
|
||||
/* spaceListRem.c */
|
||||
/* spaceOpen.c */
|
||||
msgSpace *msgSpaceOpen(msgSpaceId externId);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include "libnazgul.h"
|
||||
#include "ids.h"
|
||||
#include "libnazgul.h"
|
||||
|
||||
int msgQueueClose(msgQueue * queue){
|
||||
msgQueueId qId;
|
||||
|
|
|
@ -3,4 +3,50 @@
|
|||
// ajoute un element en début de liste.
|
||||
// fait pointer l'ancien dernier vers lui
|
||||
// il s'enregistre en tant que dernier chez la liste
|
||||
int msgSpaceListAdd(msgSpaceListElemId );
|
||||
int msgSpaceListAdd(msgSpaceListElemId newElemId){
|
||||
msgSpaceListElem * listOldTailElem;
|
||||
msgSpaceListElem * listNewTailElem;
|
||||
msgSpaceList * list=NULL;
|
||||
|
||||
list=msgSpaceListOpen();
|
||||
|
||||
// on informe l'element qui est le dernier
|
||||
listNewTailElem=msgSpaceListElemOpen(newElemId);
|
||||
if (listNewTailElem==NULL){
|
||||
}
|
||||
strcpy(listNewTailElem->next,newElemId);
|
||||
if (msgSpaceListElemClose(listNewTailElem) <0 ){
|
||||
NZG_ERROR("msgQueueElemClose",newElemId);
|
||||
goto ERROR;
|
||||
}
|
||||
|
||||
/* TODO: verifier si la liste n'est pas vide... */
|
||||
if((strcmp(list->headId,list->id)==0)
|
||||
&& (strcmp(list->tailId,list->id)==0)) {
|
||||
printf("- premier elem de queue -\n");
|
||||
// on donne a la queue l'id de l'element
|
||||
strcpy(list->headId,newElemId);
|
||||
strcpy(list->tailId,newElemId);
|
||||
} else {
|
||||
/* on informe son prédecesseur qu'il a un suivant */
|
||||
listOldTailElem=msgSpaceListElemOpen(list->tailId);
|
||||
if (listOldTailElem == NULL){
|
||||
NZG_ERROR("msgQueueElemOpen",list->tailId);
|
||||
goto ERROR;
|
||||
}
|
||||
strcpy(listOldTailElem->next,newElemId);
|
||||
if (msgSpaceListElemClose(listOldTailElem) < 0){
|
||||
NZG_ERROR("msgQueueElemClose",list->tailId);
|
||||
goto ERROR;
|
||||
}
|
||||
// on donne a la queue l'id du dernier element
|
||||
strcpy(list->tailId,newElemId);
|
||||
}
|
||||
// on incremente elemCounter
|
||||
list->elemCounter++;
|
||||
msgSpaceListClose(list);
|
||||
return 0;
|
||||
ERROR:
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
|
|
@ -2,33 +2,33 @@
|
|||
#include "ids.h"
|
||||
|
||||
// cree un nouvel elemen
|
||||
int msgSpaceListElemCreate(msgSpaceListElemId elemenListId,msgSpace * space){
|
||||
int msgSpaceListElemCreate(
|
||||
msgSpaceListElemId elemenListId,
|
||||
msgSpace * space)
|
||||
{
|
||||
|
||||
int shmElemenList;
|
||||
|
||||
/*Creation de lid pour lespace de message*/
|
||||
msgSpaceId listElemId;
|
||||
|
||||
spaceListElemIdIntern(elemenListId,space->externId);
|
||||
strcpy(listElemId,space->id);
|
||||
int listElemFd;
|
||||
|
||||
listElemFd=shm_open(listElemId,
|
||||
O_RDWR|O_CREAT|O_EXCL|O_TRUNC,
|
||||
SHM_DEFAULT_MODE);
|
||||
|
||||
if ((shmElemenList=shm_open(elemenListId,
|
||||
O_RDWR|O_CREAT|O_EXCL|O_TRUNC,
|
||||
MSGSPACE_DEFAULT_MODE))==-1){
|
||||
NZG_ERROR("shm_open:Space list creation",elemenListId);
|
||||
goto ERROR;
|
||||
}
|
||||
if (listElemFd == -1 ) {
|
||||
NZG_ERROR("shm_open : msgSpaceListElem creation",listElemId);
|
||||
goto ERROR;
|
||||
}
|
||||
|
||||
if(ftruncate(shmElemenList,sizeof(elemenListId) ) <0) {
|
||||
NZG_ERROR("ftruncate",elemenListId);
|
||||
goto ERROR;
|
||||
};
|
||||
|
||||
close (shmElemenList);
|
||||
//TODO: mapper le shm en mémoire et remplir avec des informations
|
||||
|
||||
//strcpy(spaceListElem->spaceId,space->id);
|
||||
return 0;
|
||||
if (ftruncate(listElemFd, sizeof(msgQueueElem)) < 0){
|
||||
NZG_ERROR("ftruncate", listElemId);
|
||||
goto ERROR;
|
||||
}
|
||||
|
||||
close(listElemFd);
|
||||
return 0;
|
||||
ERROR:
|
||||
return-1;
|
||||
return -1;
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue