Esempio n. 1
0
        public InProcLanguageServer(
            AbstractInProcLanguageClient languageClient,
            Stream inputStream,
            Stream outputStream,
            AbstractRequestHandlerProvider requestHandlerProvider,
            Workspace workspace,
            IAsynchronousOperationListenerProvider listenerProvider,
            ILspSolutionProvider solutionProvider,
            string?clientName)
        {
            _languageClient         = languageClient;
            _requestHandlerProvider = requestHandlerProvider;
            _workspace = workspace;

            var jsonMessageFormatter = new JsonMessageFormatter();

            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <TextDocumentIdentifier, VSTextDocumentIdentifier>());
            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <ClientCapabilities, VSClientCapabilities>());

            _jsonRpc = new JsonRpc(new HeaderDelimitedMessageHandler(outputStream, inputStream, jsonMessageFormatter));
            _jsonRpc.AddLocalRpcTarget(this);
            _jsonRpc.StartListening();

            _listener   = listenerProvider.GetListener(FeatureAttribute.LanguageServer);
            _clientName = clientName;

            _queue = new RequestExecutionQueue(solutionProvider);
            _queue.RequestServerShutdown += RequestExecutionQueue_Errored;
        }
Esempio n. 2
0
        public InProcLanguageServer(Stream inputStream,
                                    Stream outputStream,
                                    AbstractRequestHandlerProvider requestHandlerProvider,
                                    CodeAnalysis.Workspace workspace,
                                    IDiagnosticService diagnosticService,
                                    IAsynchronousOperationListenerProvider listenerProvider,
                                    string?clientName)
        {
            _requestHandlerProvider = requestHandlerProvider;
            _workspace = workspace;

            var jsonMessageFormatter = new JsonMessageFormatter();

            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <TextDocumentIdentifier, VSTextDocumentIdentifier>());
            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <ClientCapabilities, VSClientCapabilities>());

            _jsonRpc = new JsonRpc(new HeaderDelimitedMessageHandler(outputStream, inputStream, jsonMessageFormatter));
            _jsonRpc.AddLocalRpcTarget(this);
            _jsonRpc.StartListening();

            _diagnosticService = diagnosticService;
            _listener          = listenerProvider.GetListener(FeatureAttribute.LanguageServer);
            _clientName        = clientName;
            _diagnosticService.DiagnosticsUpdated += DiagnosticService_DiagnosticsUpdated;

            _clientCapabilities = new VSClientCapabilities();
        }
 public AbstractLanguageServerClient(AbstractRequestHandlerProvider requestHandlerProvider,
                                     VisualStudioWorkspace workspace,
                                     IDiagnosticService diagnosticService,
                                     string?diagnosticsClientName)
 {
     _requestHandlerProvider = requestHandlerProvider;
     _workspace             = workspace;
     _diagnosticService     = diagnosticService;
     _diagnosticsClientName = diagnosticsClientName;
 }
Esempio n. 4
0
 public AbstractLanguageServerClient(AbstractRequestHandlerProvider requestHandlerProvider,
                                     VisualStudioWorkspace workspace,
                                     IDiagnosticService diagnosticService,
                                     IAsynchronousOperationListenerProvider listenerProvider,
                                     string?diagnosticsClientName)
 {
     _requestHandlerProvider = requestHandlerProvider;
     _workspace             = workspace;
     _diagnosticService     = diagnosticService;
     _listenerProvider      = listenerProvider;
     _diagnosticsClientName = diagnosticsClientName;
 }
Esempio n. 5
0
 public AbstractInProcLanguageClient(
     AbstractRequestHandlerProvider requestHandlerProvider,
     VisualStudioWorkspace workspace,
     IAsynchronousOperationListenerProvider listenerProvider,
     ILspSolutionProvider solutionProvider,
     string?diagnosticsClientName)
 {
     _requestHandlerProvider = requestHandlerProvider;
     _workspace             = workspace;
     _listenerProvider      = listenerProvider;
     _solutionProvider      = solutionProvider;
     _diagnosticsClientName = diagnosticsClientName;
 }
Esempio n. 6
0
 public AbstractInProcLanguageClient(
     AbstractRequestHandlerProvider requestHandlerProvider,
     VisualStudioWorkspace workspace,
     IDiagnosticService?diagnosticService,
     IAsynchronousOperationListenerProvider listenerProvider,
     ILspWorkspaceRegistrationService lspWorkspaceRegistrationService,
     string?diagnosticsClientName)
 {
     _requestHandlerProvider = requestHandlerProvider;
     Workspace          = workspace;
     _diagnosticService = diagnosticService;
     _listenerProvider  = listenerProvider;
     _lspWorkspaceRegistrationService = lspWorkspaceRegistrationService;
     _diagnosticsClientName           = diagnosticsClientName;
 }
        public InProcLanguageServer(
            AbstractInProcLanguageClient languageClient,
            Stream inputStream,
            Stream outputStream,
            AbstractRequestHandlerProvider requestHandlerProvider,
            Workspace workspace,
            IDiagnosticService?diagnosticService,
            IAsynchronousOperationListenerProvider listenerProvider,
            ILspSolutionProvider solutionProvider,
            string?clientName)
        {
            _languageClient         = languageClient;
            _requestHandlerProvider = requestHandlerProvider;
            _workspace = workspace;

            var jsonMessageFormatter = new JsonMessageFormatter();

            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <TextDocumentIdentifier, VSTextDocumentIdentifier>());
            jsonMessageFormatter.JsonSerializer.Converters.Add(new VSExtensionConverter <ClientCapabilities, VSClientCapabilities>());

            _jsonRpc = new JsonRpc(new HeaderDelimitedMessageHandler(outputStream, inputStream, jsonMessageFormatter));
            _jsonRpc.AddLocalRpcTarget(this);
            _jsonRpc.StartListening();

            _diagnosticService = diagnosticService;
            _listener          = listenerProvider.GetListener(FeatureAttribute.LanguageServer);
            _clientName        = clientName;

            _queue = new RequestExecutionQueue(solutionProvider);
            _queue.RequestServerShutdown += RequestExecutionQueue_Errored;

            // Dedupe on DocumentId.  If we hear about the same document multiple times, we only need to process that id once.
            _diagnosticsWorkQueue = new AsyncBatchingWorkQueue <DocumentId>(
                TimeSpan.FromMilliseconds(250),
                ProcessDiagnosticUpdatedBatchAsync,
                EqualityComparer <DocumentId> .Default,
                _listener,
                _queue.CancellationToken);

            if (_diagnosticService != null)
            {
                _diagnosticService.DiagnosticsUpdated += DiagnosticService_DiagnosticsUpdated;
            }
        }