Пример #1
0
        private static void AddToActiveListInSortedOrder(TimerManager pInstance, TimeEvent pNewNode)
        {
            TimeEvent pListPointer = (TimeEvent)pInstance.BaseGetActive();

            if ((pListPointer == null) || (pNewNode.GetTriggerTime() <= pListPointer.GetTriggerTime()))
            {
                // If list is empty, or if pNode.triggerTime <= head.triggerTime
                // make the node as head
                pInstance.BaseSetActiveHead(pNewNode);
            }
            else
            {
                while (pListPointer != null)
                {
                    // If next TimeEvent has a greater triggerTime than new node, insert into list
                    if (pListPointer.GetTriggerTime() >= pNewNode.GetTriggerTime())
                    {
                        AddToListBeforeNode(pNewNode, pListPointer);

                        // Break loop
                        break;
                    }
                    else if (pListPointer.GetNext() == null)
                    {
                        AddToListAfterNode(pNewNode, pListPointer);
                        break;
                    }

                    pListPointer = (TimeEvent)pListPointer.GetNext();
                }
            }
        }