예제 #1
0
                    public void Enqueue(WorkItem item)
                    {
                        Contract.ThrowIfFalse(
                            item.DocumentId != null,
                            "can only enqueue a document work item"
                            );

                        UpdateLastAccessTime();

                        var added = _workItemQueue.AddOrReplace(item);

                        Logger.Log(
                            FunctionId.WorkCoordinator_DocumentWorker_Enqueue,
                            s_enqueueLogger,
                            Environment.TickCount,
                            item.DocumentId,
                            !added
                            );

                        CheckHigherPriorityDocument(item);

                        SolutionCrawlerLogger.LogWorkItemEnqueue(
                            Processor._logAggregator,
                            item.Language,
                            item.DocumentId,
                            item.InvocationReasons,
                            item.IsLowPriority,
                            item.ActiveMember,
                            added
                            );
                    }
                    public void Enqueue(WorkItem item)
                    {
                        UpdateLastAccessTime();

                        // Project work
                        item = item.ToProjectWorkItem(
                            Processor._listener.BeginAsyncOperation("WorkItem")
                            );

                        var added = _workItemQueue.AddOrReplace(item);

                        // lower priority queue gets lowest time slot possible. if there is any activity going on in higher queue, it drop whatever it has
                        // and let higher work item run
                        CancelRunningTaskIfHigherQueueHasWorkItem();

                        Logger.Log(
                            FunctionId.WorkCoordinator_Project_Enqueue,
                            s_enqueueLogger,
                            Environment.TickCount,
                            item.ProjectId,
                            !added
                            );

                        SolutionCrawlerLogger.LogWorkItemEnqueue(
                            Processor._logAggregator,
                            item.ProjectId
                            );
                    }
예제 #3
0
                    public void Enqueue(WorkItem item)
                    {
                        this.UpdateLastAccessTime();

                        // Project work
                        item = item.With(documentId: null, projectId: item.ProjectId, asyncToken: this.Processor._listener.BeginAsyncOperation("WorkItem"));

                        var added = _workItemQueue.AddOrReplace(item);

                        Logger.Log(FunctionId.WorkCoordinator_Project_Enqueue, s_enqueueLogger, Environment.TickCount, item.ProjectId, !added);

                        SolutionCrawlerLogger.LogWorkItemEnqueue(this.Processor._logAggregator, item.ProjectId);
                    }