void CVwsEventQueue::HandleEventProcessed() { if (iQueueSize==1) { Head()->HandleLastOnQueue(); DeleteHead(); LOG3(CVwsLog::ELoud,_L("Completed event at head of %S, queue empty"),&iQueueName); iState=EEmpty; } else if (iQueueSize>0) { DeleteHead(); LOG4(CVwsLog::ELoud,_L("Completed event at head of %S, processing next [queue size %d]"),&iQueueName,iQueueSize); // Start processing next event in the queue. TInt err=KErrGeneral; while (iQueueSize>0 && err) { TRAP(err, Head()->ProcessEventL()); if (err) { DeleteHead(); if (0==iQueueSize) { iState=EEmpty; } } } } }
/* * Every so often, delete some entries in the list. */ DWORD WINAPI DeleteThreadFunc(LPVOID n) { int i; for (i=0; i<100; i++) { Sleep(1); AcquireWriteLock(&gpList->lock); DeleteHead(gpList); DeleteHead(gpList); DeleteHead(gpList); ReleaseWriteLock(&gpList->lock); } return 0; }
int LinkedList::Pop() { // get head and remove first node if (IsEmpty()) throw(1); int iNode = nodeHead->nodeId; DeleteHead(); return iNode; }
void CVwsEventQueue::KickStart() { //Attempt to restart stalled q DeleteHead(); iState=EEmpty; TInt err = KErrGeneral; while(iQueueSize>0 && err) { iState=EProcessing; TRAP(err, Head()->ProcessEventL()); if (err) { DeleteHead(); iState=EEmpty; } } }
void CNodeList::DeleteAll() { while(pHead != 0) { DeleteHead(); } pTail = 0; nNodeCount = 0; }
BOOL DeleteList(List *pList) { AcquireWriteLock(&pList->lock); while (DeleteHead(pList)) ; ReleaseWriteLock(&pList->lock); DestroyRWLock(&gpList->lock); GlobalFree(pList); return TRUE; }
Lista *Pop(Lista *L,int *x) { if (L==NULL) { *x=-1; return NULL; } else { *x=L->inf; L=DeleteHead(L); return L; } }
void CVwsEventQueue::ProcessEventL(CVwsEvent* aEvent) { TInt err=AddToTail(aEvent); if(err!=KErrNone) { if(aEvent!=NULL) { delete aEvent; aEvent=NULL; } User::Leave(err); } if (aEvent) { switch (iState) { case EEmpty: { iState=EProcessing; TRAPD(err,aEvent->ProcessEventL()); if (err) { DeleteHead(); iState=EEmpty; } User::LeaveIfError(err); } break; case EProcessing: // Wait until current event has finished being processed. break; default: ASSERT(EFalse); } } }
LinkedList::~LinkedList() { while (nodeHead != NULL) DeleteHead(); }