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

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

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