示例#1
0
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;
						}
					}
				}
		}
	}
示例#2
0
/*
 * 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;
  }
示例#4
0
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;
			}
		}
	}
示例#5
0
void CNodeList::DeleteAll()
{
	while(pHead != 0)
	{
		DeleteHead();
	}
	pTail = 0;
	nNodeCount = 0;
}
示例#6
0
BOOL DeleteList(List *pList)
{
	AcquireWriteLock(&pList->lock);
	while (DeleteHead(pList))
		;
	ReleaseWriteLock(&pList->lock);

	DestroyRWLock(&gpList->lock);

    GlobalFree(pList);

	return TRUE;
}
示例#7
0
文件: lex.yy.c 项目: DesiD/CsInfoPa
 Lista *Pop(Lista *L,int *x)
 {
 
 	if (L==NULL)
 	{
 		*x=-1;
 		return NULL;
 	}
 	else
 	{
 		*x=L->inf;
 		L=DeleteHead(L);
 		return L;
 	}
 }
示例#8
0
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();
 }