Beispiel #1
0
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;
}
Beispiel #2
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;
}
Beispiel #3
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();
 }