提交 5c47a5f0 编写于 作者: P Paul Vick

Remove extraneous service base

上级 5057529c
......@@ -61,7 +61,6 @@
<Compile Include="Services\CodeAnalysisService.cs" />
<Compile Include="Services\CodeAnalysisService_Diagnostics.cs" />
<Compile Include="Services\RemoteHostService.cs" />
<Compile Include="Services\ServiceHubJsonRpcServiceBase.cs" />
<Compile Include="Services\ServiceHubServiceBase.cs" />
<Compile Include="Services\SnapshotService.cs" />
<Compile Include="Shared\Extensions.cs" />
......
......@@ -6,7 +6,7 @@
namespace Microsoft.CodeAnalysis.Remote
{
// root level service for all Roslyn services
internal partial class CodeAnalysisService : ServiceHubJsonRpcServiceBase
internal partial class CodeAnalysisService : ServiceHubServiceBase
{
public CodeAnalysisService(Stream stream, IServiceProvider serviceProvider) :
base(stream, serviceProvider)
......
......@@ -12,7 +12,7 @@ namespace Microsoft.CodeAnalysis.Remote
///
/// basically, this is used to manage lifetime of the service hub.
/// </summary>
internal class RemoteHostService : ServiceHubJsonRpcServiceBase
internal class RemoteHostService : ServiceHubServiceBase
{
private string _host;
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using StreamJsonRpc;
using System;
using System.IO;
using System.Threading;
namespace Microsoft.CodeAnalysis.Remote
{
internal abstract class ServiceHubJsonRpcServiceBase : ServiceHubServiceBase
{
private readonly CancellationTokenSource _source;
protected readonly JsonRpc Rpc;
protected readonly CancellationToken CancellationToken;
public ServiceHubJsonRpcServiceBase(Stream stream, IServiceProvider serviceProvider) : base(stream, serviceProvider)
{
_source = new CancellationTokenSource();
CancellationToken = _source.Token;
Rpc = JsonRpc.Attach(stream, this);
Rpc.Disconnected += OnRpcDisconnected;
}
protected virtual void OnDisconnected(JsonRpcDisconnectedEventArgs e)
{
// do nothing
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
Rpc.Dispose();
}
private void OnRpcDisconnected(object sender, JsonRpcDisconnectedEventArgs e)
{
// raise cancellation
_source.Cancel();
OnDisconnected(e);
if (e.Reason != DisconnectedReason.Disposed)
{
LogError($"Client stream disconnected unexpectedly: {e.Exception?.GetType().Name} {e.Exception?.Message}");
}
}
}
}
......@@ -4,6 +4,7 @@
using System.Diagnostics;
using System.IO;
using System.Threading;
using StreamJsonRpc;
namespace Microsoft.CodeAnalysis.Remote
{
......@@ -11,9 +12,12 @@ namespace Microsoft.CodeAnalysis.Remote
// right now, tightly coupled to service hub
internal abstract class ServiceHubServiceBase : IDisposable
{
private static int s_instanceId = 0;
private static int s_instanceId;
private readonly CancellationTokenSource _source;
protected readonly int InstanceId = 0;
protected readonly JsonRpc Rpc;
protected readonly CancellationToken CancellationToken;
protected readonly int InstanceId;
protected readonly TraceSource Logger;
protected readonly Stream Stream;
......@@ -25,9 +29,15 @@ protected ServiceHubServiceBase(Stream stream, IServiceProvider serviceProvider)
Logger.TraceInformation($"{DebugInstanceString} Service instance created");
Stream = stream;
_source = new CancellationTokenSource();
CancellationToken = _source.Token;
Rpc = JsonRpc.Attach(stream, this);
Rpc.Disconnected += OnRpcDisconnected;
}
protected string DebugInstanceString => $"{GetType().ToString()} ({InstanceId})";
protected string DebugInstanceString => $"{GetType()} ({InstanceId})";
protected virtual void Dispose(bool disposing)
{
......@@ -46,6 +56,28 @@ public void Dispose()
Dispose(false);
Logger.TraceInformation($"{DebugInstanceString} Service instance disposed");
Rpc.Dispose();
}
protected virtual void OnDisconnected(JsonRpcDisconnectedEventArgs e)
{
// do nothing
}
private void OnRpcDisconnected(object sender, JsonRpcDisconnectedEventArgs e)
{
// raise cancellation
_source.Cancel();
OnDisconnected(e);
if (e.Reason != DisconnectedReason.Disposed)
{
LogError($"Client stream disconnected unexpectedly: {e.Exception?.GetType().Name} {e.Exception?.Message}");
}
}
}
}
......@@ -11,7 +11,7 @@ namespace Microsoft.CodeAnalysis.Remote
///
/// this service will be used to move over snapshot data from client to service hub
/// </summary>
internal partial class SnapshotService : ServiceHubJsonRpcServiceBase
internal partial class SnapshotService : ServiceHubServiceBase
{
private readonly AssetSource _source;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册