Beispiel #1
0
        private List <IndexWorkflowRecord> RemoveFromQueueUntilPunctuation(IndexWorkflowRecordNode from)
        {
            List <IndexWorkflowRecord> workflowRecords = new List <IndexWorkflowRecord>();

            if (from != null && !from.IsPunctuation())
            {
                workflowRecords.Add(from.WorkflowRecord);
            }

            IndexWorkflowRecordNode tmp = from.Next;

            while (tmp != null && !tmp.IsPunctuation())
            {
                workflowRecords.Add(tmp.WorkflowRecord);
                tmp = tmp.Next;
                tmp.Prev.Clean();
            }

            if (tmp == null)
            {
                from.Remove(ref State.State.WorkflowRecordsHead, ref _workflowRecordsTail);
            }
            else
            {
                from.Next = tmp;
                tmp.Prev  = from;
                from.Remove(ref State.State.WorkflowRecordsHead, ref _workflowRecordsTail);
                tmp.Remove(ref State.State.WorkflowRecordsHead, ref _workflowRecordsTail);
            }

            return(workflowRecords);
        }
Beispiel #2
0
        private void RemoveFromQueueNonPersistent(IndexWorkflowRecord newWorkflow)
        {
            IndexWorkflowRecordNode current = State.State.WorkflowRecordsHead;

            while (current != null)
            {
                if (newWorkflow.Equals(current.WorkflowRecord))
                {
                    current.Remove(ref State.State.WorkflowRecordsHead, ref _workflowRecordsTail);
                    return;
                }
                current = current.Next;
            }
        }