コード例 #1
0
        public CancellationToken Start(IServiceContainer services, JsonRpc rpc)
        {
            _server   = new Server(services);
            _services = services;
            _rpc      = rpc;

            _jsonSerializer  = services.GetService <JsonSerializer>();
            _idleTimeTracker = services.GetService <IIdleTimeTracker>();
            _logger          = services.GetService <ILogger>();
            _telemetry       = services.GetService <ITelemetryService>();

            var rpcTraceListener = new TelemetryRpcTraceListener(_telemetry);

            _rpc.TraceSource.Listeners.Add(rpcTraceListener);

            _diagnosticsPublisher                     = new DiagnosticsPublisher(_server, services);
            _server.OnApplyWorkspaceEdit             += OnApplyWorkspaceEdit;
            _server.OnRegisterCapability             += OnRegisterCapability;
            _server.OnUnregisterCapability           += OnUnregisterCapability;
            _server.AnalysisQueue.UnhandledException += OnAnalysisQueueUnhandledException;

            _disposables
            .Add(() => _server.OnApplyWorkspaceEdit             -= OnApplyWorkspaceEdit)
            .Add(() => _server.OnRegisterCapability             -= OnRegisterCapability)
            .Add(() => _server.OnUnregisterCapability           -= OnUnregisterCapability)
            .Add(() => _server.AnalysisQueue.UnhandledException -= OnAnalysisQueueUnhandledException)
            .Add(() => _shutdownCts.Cancel())
            .Add(_prioritizer)
            .Add(() => _pathsWatcher?.Dispose())
            .Add(() => _rpc.TraceSource.Listeners.Remove(rpcTraceListener))
            .Add(_diagnosticsPublisher);

            return(_sessionTokenSource.Token);
        }
コード例 #2
0
        public CancellationToken Start(IServiceManager services, JsonRpc rpc)
        {
            _server   = new Server(services);
            _services = services;
            _rpc      = rpc;

            _jsonSerializer  = services.GetService <JsonSerializer>();
            _idleTimeTracker = services.GetService <IIdleTimeTracker>();
            _logger          = services.GetService <ILogger>();
            _telemetry       = services.GetService <ITelemetryService>();
            _requestTimer    = new RequestTimer(_telemetry);

            var rpcTraceListener = new TelemetryRpcTraceListener(_telemetry);

            _rpc.TraceSource.Listeners.Add(rpcTraceListener);

            _disposables
            .Add(() => _shutdownCts.Cancel())
            .Add(_prioritizer)
            .Add(() => _pathsWatcher?.Dispose())
            .Add(() => _rpc.TraceSource.Listeners.Remove(rpcTraceListener));

            services.AddService(_optionsProvider);
            return(_sessionTokenSource.Token);
        }