Esempio n. 1
0
int main()
{
  int i = 0;
  int j = 0;
  DLLIST *item = NULL;
  for(i = 1; i <= 10; i++)
  {
    DLAppend(&tryList, 0, &i, sizeof(int));
  }
  printList();

  for(item = DLGetFirst(tryList); item != NULL; item = item->Next)
  {
    j = j + 1;
    if(j == 1 || j == 6 || j == 10)
    {
        item->Tag = 0;
    }
    else
    {
        item->Tag = 1;
    }
    printf("totalaa count = %d\r\n", DLCount(tryList));
  }
  printf("j = %d\r\n", j);

  if(tryList != NULL)
  {
    for(item = DLGetFirst(tryList); item != NULL;)
    {
       DLLIST *nextItem = item->Next;
        if(item != NULL && item->Tag == 1)
        {
            if(item == DLGetFirst(tryList))
            {
                printf("aaa\r\n");
                tryList = item->Next;
                DLDelete(item);
                item = tryList;
                continue;
            }
            else
            {
                printf("bbb\r\n");
                DLDelete(item);
                //item = nextItem;
            }
        }
        item = nextItem;
    }
    
  }
  printList();


}
Esempio n. 2
0
void addData2SendList(SendList_t *sList, sendData_t* sendData)
{
    if(sList->eleNum < MAX_SEND_BUF)
    {
        DLAppend(&(sList->sendList), 0, sendData, sizeof(sendData_t));
        sList->eleNum = sList->eleNum + 1;
    }
    else//delete the oldest one, the add new one
    {
        DLLIST *oldestItem = DLGetFirst(sList->sendList);
        printf("sendList full---------------------\r\n");
        if(NULL == oldestItem)
        {
            return;
        }
        DLLIST *nextItem = oldestItem->Next;
        if(NULL == nextItem)
        {
            return;
        }
        sList->sendList = nextItem;
        DLDelete(oldestItem);
        DLAppend(&(sList->sendList), 0, sendData, sizeof(sendData_t));
    }
    return;
}
Esempio n. 3
0
void sendSendList(SendList_t *sList, int needRes)
{
    DLLIST *item;
    for(item = DLGetFirst(sList->sendList); item != NULL; item = item->Next)
    {
        sendData_t *sendData = item->Object;
        if(1 == sendDataEle(sendData))
        {
            item->Tag = SENDOK;//send success
        }
        else
        {
            item->Tag = SENDERR;//send fail
        }
        sendData->retryTimes = sendData->retryTimes + 1;
    }
    
    if(NO_NEED_RES == needRes)//if no need res, delete when it send success
    {
        for(item = DLGetFirst(sList->sendList); item != NULL;)
        {
            DLLIST *nextItem = item->Next;
            if(item != NULL && item->Tag == SENDOK)
            {
                if(item == DLGetFirst(sList->sendList))
                {
                    sList->sendList = item->Next;
                    DLDelete(item);
                    sList->eleNum = sList->eleNum - 1;
                    item = sList->sendList;
                    continue;
                }
                else
                {
                    DLDelete(item);
                    sList->eleNum = sList->eleNum - 1;
                }
            }
            item = nextItem;
        }
    }
}
Esempio n. 4
0
int DelItem(DLLIST *item)
{
    if(DLGetFirst(tryList) == item)//delete first item
    {
        tryList = item->Next;
        DLDelete(item);
        return 1;
    }
    else
    {
        DLDelete(item);
        return 0;
    }
}
Esempio n. 5
0
printList()
{
  DLLIST *item = NULL;
  for(item = DLGetFirst(tryList); item != NULL; item = item->Next)
  {
    int *i = item->Object;
    if(NULL == i)
    {
        printf("NULL in list\r\n");
    }
    else
    {
        printf(" %d ", (*i));
    }
  }
  
  printf("total count = %d\r\n", DLCount(tryList));
}
Esempio n. 6
0
/*
	查找当前技术报警的最高级别
	return -1: error
	pInfo: 存放报警记录详细资料
*/
static int GetTecAlarmClass(PB_ALM_INFO pInfo)
{
	int res;
	int iListNum = 0;
	int iClass = -1;
	int i;
	DLLIST *FindAddr=NULL;			//查找到的记录的地址
	B_ALM_INFO *pFindInfo=NULL;		//查找到的记录
	B_ALM_INFO FindInfo;				//查找到的记录
		
	iListNum = DLCount((DLLIST *)gDListAlmTec);
	
	if(iListNum <=0) iClass = -1;
	
	//遍历链表,查找级别最高的记录
	FindAddr = DLGetFirst(gDListAlmTec);
	for(i=0; i<iListNum;i++){
		if(FindAddr != NULL){
// 			pthread_mutex_lock(&mtPhyAlm);
			pFindInfo = (B_ALM_INFO *)DLGetData(FindAddr, NULL, NULL);
			FindInfo = *pFindInfo;
			FindAddr = FindAddr->Next;
// 			pthread_mutex_unlock(&mtPhyAlm);
			if(pFindInfo !=NULL){
				if(FindInfo.bClass == ALARM_INFO) FindInfo.bClass = ALARM_OFF;
				if(iClass < FindInfo.bClass){
					iClass = FindInfo.bClass;
					*pInfo = *pFindInfo;
				}
				//如果查到第一个高级报警的记录,就不用再查了
				if(iClass >= ALARM_HIGH && iClass !=ALARM_INFO){
					break;	
				}
			}
		}
		else{
			if(B_PRINTF) printf("%s:%d No Data Found.\n", __FILE__, __LINE__);
		}
				
	}
	
	return iClass;
}