int Get_Attr_Value(int attr,int *iValue) { int AttrPos, iRet; // added by noradcai 2009-03-30 增加对共享内存的检查 if(needCheckShm()) { if(CheckShm()!=CHECK_SHM_SUCCESS) { fprintf(stderr, "check shm error!\n"); return -1; } setShmCheckFlag(); } if (!pstAttr&&GetShm2((void**)&pstAttr, ATTR_SHM_ID, getShmSize(), 0666) < 0) { fprintf(stderr, "can not get shm ...continue!\n"); return -1; } iRet = SearchAttrID(pstAttr,attr,&AttrPos); if(iRet == 1)//返回0 attr不存在,返回1 attr存在 { *iValue = pstAttr->astNode[AttrPos].iCurValue; } else { return -1; } return 0; }
int Attr_API_Set(int attr,int iValue) { int AttrPos, iRet; // added by noradcai 2009-03-30 增加对共享内存的检查 if(needCheckShm()) { if(CheckShm()!=CHECK_SHM_SUCCESS) { fprintf(stderr, "check shm error!\n"); return -1; } setShmCheckFlag(); } if (!pstAttr&&GetShm2((void**)&pstAttr, ATTR_SHM_ID, getShmSize(), 0666) < 0) { fprintf(stderr, "get share memory error\n"); return -1; } iRet = SearchAttrID(pstAttr,attr,&AttrPos); if(!iRet)//返回0 attr不存在,返回1 attr存在 { pstAttr->astNode[AttrPos].iUse=1; pstAttr->astNode[AttrPos].iAttrID=attr; pstAttr->astNode[AttrPos].iCurValue=iValue; } else if(iRet==-1) { fprintf(stderr, "%s %d: out of memory. maxAttrNode=%d\n", __FILE__, __LINE__,getMaxAttrNode()); return -1; } else { pstAttr->astNode[AttrPos].iCurValue=iValue; } return 0; }
char* Shm::getShmNoCreateAndCheck(int iFlag, int *piSize) { int iRealShmSize = 0; if (getShmId(iFlag) == 0) { return NULL; } iRealShmSize = getShmSize(); if (iRealShmSize == 0) { return NULL; } if (*piSize != 0 && *piSize != iRealShmSize) { snprintf(lastErrorBuf, sizeof(lastErrorBuf), "*piSize[%d] != iRealShmSize[%d]", *piSize, iRealShmSize); return NULL; } if (*piSize == 0) { *piSize = iRealShmSize; } return getAdr(); }