Example #1
0
        internal Status UpdateIndex()
        {
            UpdateJob proposedJob = Storage.CreateUpdateJob(ViewsInGroup().Select(x => x.Storage));
            UpdateJob nextJob     = null;
            var       updateQueue = _UpdateQueueFactory.ListForGroup(GroupName());

            updateQueue.Lock();
            try {
                if (updateQueue.Count > 0)
                {
                    nextJob = updateQueue.FirstOrDefault(x => x.Equals(proposedJob));
                    if (nextJob == null)
                    {
                        QueueUpdate(proposedJob);
                        nextJob = proposedJob;
                    }
                }
                else
                {
                    QueueUpdate(proposedJob);
                    nextJob = proposedJob;
                    nextJob.Run();
                }
            } finally {
                updateQueue.Unlock();
            }

            nextJob.Wait();
            return(nextJob.Result);
        }
Example #2
0
        internal Status UpdateIndex()
        {
            //TODO: View grouping
            var viewsToUpdate = new List <IViewStore> {
                Storage
            };

            UpdateJob proposedJob = Storage.CreateUpdateJob(viewsToUpdate);
            UpdateJob nextJob     = null;

            if (_updateQueue.TryPeek(out nextJob))
            {
                if (!nextJob.LastSequences.SequenceEqual(proposedJob.LastSequences))
                {
                    QueueUpdate(proposedJob);
                    nextJob = proposedJob;
                }
            }
            else
            {
                QueueUpdate(proposedJob);
                nextJob = proposedJob;
            }

            nextJob.Wait();
            return(nextJob.Result);
        }
Example #3
0
        internal Status UpdateIndex()
        {
            var viewsToUpdate = ViewsInGroup();

            UpdateJob proposedJob = Storage.CreateUpdateJob(viewsToUpdate);
            UpdateJob nextJob     = null;

            if (_updateQueue.TryPeek(out nextJob))
            {
                if (!nextJob.LastSequences.SequenceEqual(proposedJob.LastSequences))
                {
                    QueueUpdate(proposedJob);
                    nextJob = proposedJob;
                }
            }
            else
            {
                QueueUpdate(proposedJob);
                nextJob = proposedJob;
            }

            nextJob.Wait();
            return(nextJob.Result);
        }