/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Workspaces/Remote/ServiceHub/Services/ExtensionMessageHandler/RemoteExtensionMessageHandlerService.cs
62 строки
3 KB
Cyrus Najmabadi
Rename type
04 апр 2025, 23:37
04 апр 2025, 23:37
b6b3293
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.Extensions; using Microsoft.CodeAnalysis.Shared.Extensions; namespace Microsoft.CodeAnalysis.Remote; internal sealed partial class RemoteExtensionMessageHandlerService( in BrokeredServiceBase.ServiceConstructionArguments arguments) : BrokeredServiceBase(arguments), IRemoteExtensionMessageHandlerService { internal sealed class Factory : FactoryBase<IRemoteExtensionMessageHandlerService> { protected override IRemoteExtensionMessageHandlerService CreateService(in ServiceConstructionArguments arguments) => new RemoteExtensionMessageHandlerService(arguments); } private IExtensionMessageHandlerService GetExtensionService() => this.GetWorkspaceServices().GetRequiredService<IExtensionMessageHandlerService>(); public ValueTask RegisterExtensionAsync(string assemblyFilePath, CancellationToken cancellationToken) => RunServiceAsync( cancellationToken => GetExtensionService().RegisterExtensionAsync(assemblyFilePath, cancellationToken), cancellationToken); public ValueTask UnregisterExtensionAsync(string assemblyFilePath, CancellationToken cancellationToken) => RunServiceAsync( cancellationToken => GetExtensionService().UnregisterExtensionAsync(assemblyFilePath, cancellationToken), cancellationToken); public ValueTask ResetAsync(CancellationToken cancellationToken) => RunServiceAsync( cancellationToken => GetExtensionService().ResetAsync(cancellationToken), cancellationToken); public ValueTask<ExtensionMessageNames> GetExtensionMessageNamesAsync(string assemblyFilePath, CancellationToken cancellationToken) => RunServiceAsync( cancellationToken => GetExtensionService().GetExtensionMessageNamesAsync(assemblyFilePath, cancellationToken), cancellationToken); public ValueTask<ExtensionMessageResult> HandleExtensionDocumentMessageAsync( Checksum solutionChecksum, string messageName, string jsonMessage, DocumentId documentId, CancellationToken cancellationToken) => RunServiceAsync( solutionChecksum, async solution => { var document = await solution.GetRequiredDocumentAsync(documentId, includeSourceGenerated: true, cancellationToken).ConfigureAwait(false); return await GetExtensionService().HandleExtensionDocumentMessageAsync(document, messageName, jsonMessage, cancellationToken).ConfigureAwait(false); }, cancellationToken); public ValueTask<ExtensionMessageResult> HandleExtensionWorkspaceMessageAsync( Checksum solutionChecksum, string messageName, string jsonMessage, CancellationToken cancellationToken) => RunServiceAsync( solutionChecksum, solution => GetExtensionService().HandleExtensionWorkspaceMessageAsync(solution, messageName, jsonMessage, cancellationToken), cancellationToken); }