diff --git a/src/Microsoft.SqlTools.ServiceLayer/Hosting/Contracts/VersionRequest.cs b/src/Microsoft.SqlTools.ServiceLayer/Hosting/Contracts/VersionRequest.cs new file mode 100644 index 00000000..ed7ab358 --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/Hosting/Contracts/VersionRequest.cs @@ -0,0 +1,20 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlTools.ServiceLayer.Hosting.Protocol.Contracts; + +namespace Microsoft.SqlTools.ServiceLayer.Hosting.Contracts +{ + /// + /// Defines a message that is sent from the client to request + /// the version of the server. + /// + public class VersionRequest + { + public static readonly + RequestType Type = + RequestType.Create("version"); + } +} diff --git a/src/Microsoft.SqlTools.ServiceLayer/Hosting/ServiceHost.cs b/src/Microsoft.SqlTools.ServiceLayer/Hosting/ServiceHost.cs index 0f2a0d9a..1270982f 100644 --- a/src/Microsoft.SqlTools.ServiceLayer/Hosting/ServiceHost.cs +++ b/src/Microsoft.SqlTools.ServiceLayer/Hosting/ServiceHost.cs @@ -11,6 +11,7 @@ using Microsoft.SqlTools.EditorServices.Utility; using Microsoft.SqlTools.ServiceLayer.Hosting.Contracts; using Microsoft.SqlTools.ServiceLayer.Hosting.Protocol; using Microsoft.SqlTools.ServiceLayer.Hosting.Protocol.Channel; +using System.Reflection; namespace Microsoft.SqlTools.ServiceLayer.Hosting { @@ -55,6 +56,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Hosting // Register the requests that this service host will handle this.SetRequestHandler(InitializeRequest.Type, this.HandleInitializeRequest); this.SetRequestHandler(ShutdownRequest.Type, this.HandleShutdownRequest); + this.SetRequestHandler(VersionRequest.Type, HandleVersionRequest); } #endregion @@ -69,6 +71,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Hosting private readonly List initializeCallbacks; + private static readonly Version serviceVersion = Assembly.GetEntryAssembly().GetName().Version; + #endregion #region Public Methods @@ -149,6 +153,17 @@ namespace Microsoft.SqlTools.ServiceLayer.Hosting }); } + /// + /// Handles the version request. Sends back the server version as result. + /// + private static async Task HandleVersionRequest( + object versionRequestParams, + RequestContext requestContext) + { + Logger.Write(LogLevel.Verbose, "HandleVersionRequest"); + await requestContext.SendResult(serviceVersion.ToString()); + } + #endregion } }