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(); }
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; }
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; } } }
int DelItem(DLLIST *item) { if(DLGetFirst(tryList) == item)//delete first item { tryList = item->Next; DLDelete(item); return 1; } else { DLDelete(item); return 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)); }
/* 查找当前技术报警的最高级别 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; }