提交 9d135b60 编写于 作者: H Heejae Chang

more code clean up - rename, add logging scope and etc

上级 af08805d
......@@ -3,11 +3,11 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Execution;
using Microsoft.CodeAnalysis.Notification;
using Microsoft.CodeAnalysis.Remote;
using Microsoft.CodeAnalysis.Shared.TestHooks;
using Microsoft.CodeAnalysis.SolutionCrawler;
using Microsoft.CodeAnalysis.Internal.Log;
namespace Microsoft.VisualStudio.LanguageServices.Remote
{
......@@ -125,6 +125,8 @@ private async Task SynchronizeAssets()
return;
}
using (Logger.LogBlock(FunctionId.SolutionChecksumUpdater_SynchronizeAssets, ShutdownCancellationToken))
{
var solution = _service.Workspace.CurrentSolution;
using (var session = await remoteHostClient.CreateServiceSessionAsync(WellKnownRemoteHostServices.RemoteHostService, solution, ShutdownCancellationToken).ConfigureAwait(false))
{
......@@ -132,6 +134,7 @@ private async Task SynchronizeAssets()
await session.InvokeAsync(WellKnownRemoteHostServices.RemoteHostService_SynchronizeAsync).ConfigureAwait(false);
}
}
}
private static void CancelAndDispose(CancellationTokenSource cancellationSource)
{
......
......@@ -178,7 +178,7 @@ private async Task WriteOneAssetAsync(ObjectWriter writer, byte[] checksum)
{
var service = ChecksumScope.Workspace.Services.GetRequiredService<ISolutionSynchronizationService>();
var checksumObject = service.GetSynchronizationObject(new Checksum(checksum), _source.Token);
var checksumObject = service.GetRemotableData(new Checksum(checksum), _source.Token);
writer.WriteInt32(1);
writer.WriteValue(checksum);
......@@ -191,7 +191,7 @@ private async Task WriteMultipleAssetsAsync(ObjectWriter writer, byte[][] checks
{
var service = ChecksumScope.Workspace.Services.GetRequiredService<ISolutionSynchronizationService>();
var checksumObjectMap = service.GetSynchronizationObjects(checksums.Select(c => new Checksum(c)), _source.Token);
var checksumObjectMap = service.GetRemotableData(checksums.Select(c => new Checksum(c)), _source.Token);
writer.WriteInt32(checksumObjectMap.Count);
foreach (var kv in checksumObjectMap)
......
......@@ -37,16 +37,16 @@ internal interface ISolutionSynchronizationService : IWorkspaceService
/// <summary>
/// Create <see cref="PinnedRemotableDataScope"/> from <see cref="Solution"/>.
/// </summary>
Task<PinnedRemotableDataScope> CreateSynchronizationScopeAsync(Solution solution, CancellationToken cancellationToken);
Task<PinnedRemotableDataScope> CreatePinnedRemotableDataScopeAsync(Solution solution, CancellationToken cancellationToken);
/// <summary>
/// Get <see cref="RemotableData"/> corresponding to given <see cref="Checksum"/>.
/// </summary>
RemotableData GetSynchronizationObject(Checksum checksum, CancellationToken cancellationToken);
RemotableData GetRemotableData(Checksum checksum, CancellationToken cancellationToken);
/// <summary>
/// Get <see cref="RemotableData"/>s corresponding to given <see cref="Checksum"/>s.
/// </summary>
IReadOnlyDictionary<Checksum, RemotableData> GetSynchronizationObjects(IEnumerable<Checksum> checksums, CancellationToken cancellationToken);
IReadOnlyDictionary<Checksum, RemotableData> GetRemotableData(IEnumerable<Checksum> checksums, CancellationToken cancellationToken);
}
}
......@@ -12,7 +12,7 @@
namespace Microsoft.CodeAnalysis.Execution
{
[ExportWorkspaceServiceFactory(typeof(ISolutionSynchronizationService)), Shared]
internal class SolutionChecksumServiceFactory : IWorkspaceServiceFactory
internal class SolutionSynchronizationServiceFactory : IWorkspaceServiceFactory
{
private readonly AssetStorages _assetStorages = new AssetStorages();
......@@ -49,9 +49,9 @@ public void RemoveGlobalAsset(object value, CancellationToken cancellationToken)
_assetStorages.RemoveGlobalAsset(value, cancellationToken);
}
public async Task<PinnedRemotableDataScope> CreateSynchronizationScopeAsync(Solution solution, CancellationToken cancellationToken)
public async Task<PinnedRemotableDataScope> CreatePinnedRemotableDataScopeAsync(Solution solution, CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.SolutionChecksumServiceFactory_CreateChecksumAsync, cancellationToken))
using (Logger.LogBlock(FunctionId.SolutionSynchronizationServiceFactory_CreatePinnedRemotableDataScopeAsync, cancellationToken))
{
var storage = _assetStorages.CreateStorage(solution.State);
var checksum = await solution.State.GetChecksumAsync(cancellationToken).ConfigureAwait(false);
......@@ -61,17 +61,17 @@ public async Task<PinnedRemotableDataScope> CreateSynchronizationScopeAsync(Solu
}
}
public RemotableData GetSynchronizationObject(Checksum checksum, CancellationToken cancellationToken)
public RemotableData GetRemotableData(Checksum checksum, CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.SolutionChecksumServiceFactory_GetChecksumObject, Checksum.GetChecksumLogInfo, checksum, cancellationToken))
using (Logger.LogBlock(FunctionId.SolutionSynchronizationServiceFactory_GetRemotableData, Checksum.GetChecksumLogInfo, checksum, cancellationToken))
{
return _assetStorages.GetSynchronizationObject(checksum, cancellationToken);
}
}
public IReadOnlyDictionary<Checksum, RemotableData> GetSynchronizationObjects(IEnumerable<Checksum> checksums, CancellationToken cancellationToken)
public IReadOnlyDictionary<Checksum, RemotableData> GetRemotableData(IEnumerable<Checksum> checksums, CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.SolutionChecksumServiceFactory_GetChecksumObjects, Checksum.GetChecksumsLogInfo, checksums, cancellationToken))
using (Logger.LogBlock(FunctionId.SolutionSynchronizationServiceFactory_GetRemotableData, Checksum.GetChecksumsLogInfo, checksums, cancellationToken))
{
return _assetStorages.GetSynchronizationObjects(checksums, cancellationToken);
}
......
......@@ -335,8 +335,9 @@ internal enum FunctionId
RemoteHostClientService_RemoveGlobalAssets,
RemoteHostClientService_Enabled,
ServiceHubRemoteHostClient_CreateAsync,
SolutionChecksumServiceFactory_CreateChecksumAsync,
SolutionChecksumServiceFactory_GetChecksumObject,
SolutionSynchronizationServiceFactory_CreatePinnedRemotableDataScopeAsync,
SolutionSynchronizationServiceFactory_GetRemotableData,
Serializer_CreateChecksum,
Serializer_Serialize,
Serializer_Deserialize,
CodeAnalysisService_CalculateDiagnosticsAsync,
......@@ -349,11 +350,13 @@ internal enum FunctionId
AssetService_TryGetAsset,
AssetService_SynchronizeAssetsAsync,
AssetService_SynchronizeSolutionAssetsAsync,
SolutionChecksumServiceFactory_GetChecksumObjects,
CodeAnalysisService_GetReferenceCountAsync,
CodeAnalysisService_FindReferenceLocationsAsync,
CodeAnalysisService_FindReferenceMethodsAsync,
CodeAnalysisService_GetFullyQualifiedName,
Serializer_CreateChecksum,
SolutionChecksumUpdater_SynchronizeAssets,
SolutionState_ComputeChecksumsAsync,
ProjectState_ComputeChecksumsAsync,
DocumentState_ComputeChecksumsAsync,
}
}
......@@ -34,7 +34,7 @@ public async Task<Session> CreateServiceSessionAsync(string serviceName, Solutio
Contract.ThrowIfFalse(solution.Workspace == _workspace);
var service = _workspace.Services.GetService<ISolutionSynchronizationService>();
var snapshot = await service.CreateSynchronizationScopeAsync(solution, cancellationToken).ConfigureAwait(false);
var snapshot = await service.CreatePinnedRemotableDataScopeAsync(solution, cancellationToken).ConfigureAwait(false);
return await CreateServiceSessionAsync(serviceName, snapshot, callbackTarget, cancellationToken).ConfigureAwait(false);
}
......
......@@ -4,6 +4,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Serialization;
using Microsoft.CodeAnalysis.Internal.Log;
namespace Microsoft.CodeAnalysis
{
......@@ -21,6 +22,8 @@ public async Task<Checksum> GetChecksumAsync(CancellationToken cancellationToken
}
private async Task<ProjectStateChecksums> ComputeChecksumsAsync(CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.ProjectState_ComputeChecksumsAsync, FilePath, cancellationToken))
{
// get states by id order to have deterministic checksum
var documentChecksumsTasks = DocumentIds.Select(id => DocumentStates[id].GetChecksumAsync(cancellationToken));
......@@ -51,4 +54,5 @@ private async Task<ProjectStateChecksums> ComputeChecksumsAsync(CancellationToke
new TextDocumentChecksumCollection(additionalChecksums));
}
}
}
}
......@@ -4,6 +4,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Serialization;
using Microsoft.CodeAnalysis.Internal.Log;
namespace Microsoft.CodeAnalysis
{
......@@ -21,6 +22,8 @@ public async Task<Checksum> GetChecksumAsync(CancellationToken cancellationToken
}
private async Task<SolutionStateChecksums> ComputeChecksumsAsync(CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.SolutionState_ComputeChecksumsAsync, FilePath, cancellationToken))
{
// get states by id order to have deterministic checksum
var projectChecksumTasks = ProjectIds.Select(id => ProjectStates[id].GetChecksumAsync(cancellationToken));
......@@ -32,4 +35,5 @@ private async Task<SolutionStateChecksums> ComputeChecksumsAsync(CancellationTok
return new SolutionStateChecksums(infoChecksum, new ProjectChecksumCollection(projectChecksums));
}
}
}
}
......@@ -4,6 +4,7 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Serialization;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Internal.Log;
namespace Microsoft.CodeAnalysis
{
......@@ -21,6 +22,8 @@ public async Task<Checksum> GetChecksumAsync(CancellationToken cancellationToken
}
private async Task<DocumentStateChecksums> ComputeChecksumsAsync(CancellationToken cancellationToken)
{
using (Logger.LogBlock(FunctionId.DocumentState_ComputeChecksumsAsync, FilePath, cancellationToken))
{
var textTask = GetTextAsync(cancellationToken);
......@@ -32,4 +35,5 @@ private async Task<DocumentStateChecksums> ComputeChecksumsAsync(CancellationTok
return new DocumentStateChecksums(infoChecksum, textChecksum);
}
}
}
}
......@@ -17,8 +17,8 @@ internal static class Extensions
{
public static async Task<T> GetValueAsync<T>(this ISolutionSynchronizationService service, Checksum checksum)
{
var syncService = (SolutionChecksumServiceFactory.Service)service;
var syncObject = service.GetSynchronizationObject(checksum, CancellationToken.None);
var syncService = (SolutionSynchronizationServiceFactory.Service)service;
var syncObject = service.GetRemotableData(checksum, CancellationToken.None);
using (var stream = SerializableBytes.CreateWritableStream())
using (var writer = new ObjectWriter(stream))
......
......@@ -115,8 +115,8 @@ internal static async Task VerifyAssetAsync(ISolutionSynchronizationService serv
Func<T, string, Serializer, RemotableData> assetGetter)
{
// re-create asset from object
var syncService = (SolutionChecksumServiceFactory.Service)service;
var syncObject = service.GetSynchronizationObject(checksum, CancellationToken.None);
var syncService = (SolutionSynchronizationServiceFactory.Service)service;
var syncObject = service.GetRemotableData(checksum, CancellationToken.None);
var recoveredValue = await service.GetValueAsync<T>(checksum);
var recreatedSyncObject = assetGetter(recoveredValue, kind, syncService.Serializer_TestOnly);
......@@ -258,7 +258,7 @@ internal static void VerifySnapshotInService(ISolutionSynchronizationService sna
internal static void VerifyChecksumInService(ISolutionSynchronizationService snapshotService, Checksum checksum, string kind)
{
Assert.NotNull(checksum);
var otherObject = snapshotService.GetSynchronizationObject(checksum, CancellationToken.None);
var otherObject = snapshotService.GetRemotableData(checksum, CancellationToken.None);
ChecksumEqual(checksum, kind, otherObject.Checksum, otherObject.Kind);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册