示例#1
0
        public CancellationToken Start(IServiceContainer services, JsonRpc rpc)
        {
            _services       = services;
            _ui             = services.GetService <IUIService>();
            _telemetry      = services.GetService <ITelemetryService2>();
            _rpc            = rpc;
            _jsonSerializer = services.GetService <JsonSerializer>();

            var progress = services.GetService <IProgressService>();

            var rpcTraceListener = new TelemetryRpcTraceListener(_telemetry);

            _rpc.TraceSource.Listeners.Add(rpcTraceListener);

            _server.OnLogMessage           += OnLogMessage;
            _server.OnShowMessage          += OnShowMessage;
            _server.OnPublishDiagnostics   += OnPublishDiagnostics;
            _server.OnApplyWorkspaceEdit   += OnApplyWorkspaceEdit;
            _server.OnRegisterCapability   += OnRegisterCapability;
            _server.OnUnregisterCapability += OnUnregisterCapability;

            _disposables
            .Add(() => _server.OnLogMessage           -= OnLogMessage)
            .Add(() => _server.OnShowMessage          -= OnShowMessage)
            .Add(() => _server.OnPublishDiagnostics   -= OnPublishDiagnostics)
            .Add(() => _server.OnApplyWorkspaceEdit   -= OnApplyWorkspaceEdit)
            .Add(() => _server.OnRegisterCapability   -= OnRegisterCapability)
            .Add(() => _server.OnUnregisterCapability -= OnUnregisterCapability)
            .Add(() => _shutdownCts.Cancel())
            .Add(_prioritizer)
            .Add(() => _pathsWatcher?.Dispose())
            .Add(() => _rpc.TraceSource.Listeners.Remove(rpcTraceListener));

            return(_sessionTokenSource.Token);
        }
 public TelemetryRpcTraceListener(ITelemetryService2 telemetryService)
 {
     _telemetryService = telemetryService;
 }