diff --git a/src/LanguageServer/Impl/Definitions/ITelemetryService.cs b/src/LanguageServer/Impl/Definitions/ITelemetryService.cs index b6e510837..51d427ecc 100644 --- a/src/LanguageServer/Impl/Definitions/ITelemetryService.cs +++ b/src/LanguageServer/Impl/Definitions/ITelemetryService.cs @@ -14,10 +14,17 @@ // See the Apache Version 2.0 License for specific language governing // permissions and limitations under the License. +using System.Collections.Generic; using System.Threading.Tasks; namespace Microsoft.Python.LanguageServer { public interface ITelemetryService { - Task SendTelemetry(object o); + Task SendTelemetry(TelemetryEvent telemetryEvent); + } + + public sealed class TelemetryEvent { + public string EventName { get; set; } + public Dictionary Properties { get; } = new Dictionary(); + public Dictionary Measurements { get; } = new Dictionary(); } } diff --git a/src/LanguageServer/Impl/Implementation/ServerBase.cs b/src/LanguageServer/Impl/Implementation/ServerBase.cs index 86970533c..4ecbee12f 100644 --- a/src/LanguageServer/Impl/Implementation/ServerBase.cs +++ b/src/LanguageServer/Impl/Implementation/ServerBase.cs @@ -128,8 +128,9 @@ public void ShowMessage(MessageType type, string message) public void LogMessage(MessageType type, string message) => OnLogMessage?.Invoke(this, new LogMessageEventArgs { type = type, message = message }); - + [Obsolete] public event EventHandler OnTelemetry; + [Obsolete] public void Telemetry(TelemetryEventArgs e) => OnTelemetry?.Invoke(this, e); public event EventHandler OnCommand; diff --git a/src/LanguageServer/Impl/LanguageServer.cs b/src/LanguageServer/Impl/LanguageServer.cs index ff0a46f80..71edcc6cd 100644 --- a/src/LanguageServer/Impl/LanguageServer.cs +++ b/src/LanguageServer/Impl/LanguageServer.cs @@ -64,7 +64,6 @@ public CancellationToken Start(IServiceContainer services, JsonRpc rpc) { _server.OnLogMessage += OnLogMessage; _server.OnShowMessage += OnShowMessage; - _server.OnTelemetry += OnTelemetry; _server.OnPublishDiagnostics += OnPublishDiagnostics; _server.OnApplyWorkspaceEdit += OnApplyWorkspaceEdit; _server.OnRegisterCapability += OnRegisterCapability; @@ -73,7 +72,6 @@ public CancellationToken Start(IServiceContainer services, JsonRpc rpc) { _disposables .Add(() => _server.OnLogMessage -= OnLogMessage) .Add(() => _server.OnShowMessage -= OnShowMessage) - .Add(() => _server.OnTelemetry -= OnTelemetry) .Add(() => _server.OnPublishDiagnostics -= OnPublishDiagnostics) .Add(() => _server.OnApplyWorkspaceEdit -= OnApplyWorkspaceEdit) .Add(() => _server.OnRegisterCapability -= OnRegisterCapability) @@ -99,7 +97,6 @@ private class PublishDiagnosticsParams { } #region Events - private void OnTelemetry(object sender, TelemetryEventArgs e) => _telemetry.SendTelemetry(e.value); private void OnShowMessage(object sender, ShowMessageEventArgs e) => _ui.ShowMessage(e.message, e.type); private void OnLogMessage(object sender, LogMessageEventArgs e) => _ui.LogMessage(e.message, e.type); diff --git a/src/LanguageServer/Impl/Services/TelemetryService.cs b/src/LanguageServer/Impl/Services/TelemetryService.cs index 3a2714d32..b1417a684 100644 --- a/src/LanguageServer/Impl/Services/TelemetryService.cs +++ b/src/LanguageServer/Impl/Services/TelemetryService.cs @@ -24,6 +24,7 @@ public sealed class TelemetryService : ITelemetryService { public TelemetryService(JsonRpc rpc) { _rpc = rpc; } - public Task SendTelemetry(object o) => _rpc.NotifyWithParameterObjectAsync("telemetry/event", o); + public Task SendTelemetry(TelemetryEvent telemetryEvent) + => _rpc.NotifyWithParameterObjectAsync("telemetry/event", telemetryEvent); } }