コード例 #1
0
        internal void RecordBlockingExtension(object extension)
        {
            if (extension == null)
            {
                return;
            }

            string extensionName;

            switch (extension)
            {
            case IAsyncCompletionSource source:
                extensionName = CompletionTelemetryHost.GetSourceName(source);
                break;

            case IAsyncCompletionItemManager itemManager:
                extensionName = CompletionTelemetryHost.GetItemManagerName(itemManager);
                break;

            case IAsyncCompletionCommitManager commitManager:
                extensionName = CompletionTelemetryHost.GetCommitManagerName(commitManager);
                break;

            default:
                extensionName = extension.GetType().ToString();
                break;
            }

            if (!BlockingExtensionCounter.ContainsKey(extensionName))
            {
                BlockingExtensionCounter[extensionName] = 0;
            }
            BlockingExtensionCounter[extensionName]++;
        }
コード例 #2
0
 internal void RecordCommitted(long duration, bool noChanges,
                               IAsyncCompletionCommitManager manager)
 {
     CommitManagerName = CompletionTelemetryHost.GetCommitManagerName(manager);
     CommitDuration    = duration;
     NoChanges         = noChanges;
 }
コード例 #3
0
        internal void RecordObtainingSourceContext(IAsyncCompletionSource source, long elapsedMilliseconds)
        {
            var name = CompletionTelemetryHost.GetSourceName(source);

            if (Headless)
            {
                name = HeadlessCallNamePrefix + name;
            }
            ItemSourceGetContextDuration[name] = elapsedMilliseconds;
        }
コード例 #4
0
 internal void Save(
     IAsyncCompletionItemManager itemManager,
     ICompletionPresenterProvider presenterProvider,
     CompletionSessionState state)
 {
     ItemManagerName       = CompletionTelemetryHost.GetItemManagerName(itemManager);
     PresenterProviderName = CompletionTelemetryHost.GetPresenterProviderName(presenterProvider);
     CompletionState       = state;
     _telemetryHost.Add(this);
 }
コード例 #5
0
 internal void Save(
     IAsyncCompletionItemManager itemManager,
     ICompletionPresenterProvider presenterProvider,
     CompletionSessionState state)
 {
     ItemManagerName       = CompletionTelemetryHost.GetItemManagerName(itemManager);
     PresenterProviderName = CompletionTelemetryHost.GetPresenterProviderName(presenterProvider);
     CompletionState       = state;
     if (NoChanges && BlockingComputationDuration > 0)
     {
         UserWaitedForNoChanges = true;
     }
     _telemetryHost.Add(this);
 }
コード例 #6
0
        internal void RecordObtainingCommitManagerData(IAsyncCompletionCommitManager manager, long elapsedMilliseconds)
        {
            var name = CompletionTelemetryHost.GetCommitManagerName(manager);

            CommitManagerSetupDuration[name] = elapsedMilliseconds;
        }
コード例 #7
0
 public CompletionSessionTelemetry(CompletionTelemetryHost telemetryHost, bool headless = false)
 {
     _telemetryHost = telemetryHost;
     Headless       = headless;
 }