handling database info and metadata request async (#541)

This commit is contained in:
Leila Lali
2017-11-01 17:58:47 +00:00
committed by Karl Burtram
parent 93ec9864f6
commit 17e7ddd66f
2 changed files with 48 additions and 28 deletions

View File

@@ -12,6 +12,7 @@ using System.Threading.Tasks;
using System.Xml;
using Microsoft.SqlServer.Management.Smo;
using System.Collections.Concurrent;
using Microsoft.SqlTools.ServiceLayer.Utility;
namespace Microsoft.SqlTools.ServiceLayer.Admin
{
@@ -143,6 +144,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Admin
RequestContext<GetDatabaseInfoResponse> requestContext)
{
try
{
Func<Task> requestHandler = async () =>
{
ConnectionInfo connInfo;
AdminService.ConnectionServiceInstance.TryFindConnection(
@@ -155,9 +158,17 @@ namespace Microsoft.SqlTools.ServiceLayer.Admin
info = GetDatabaseInfo(connInfo);
}
await requestContext.SendResult(new GetDatabaseInfoResponse(){
await requestContext.SendResult(new GetDatabaseInfoResponse()
{
DatabaseInfo = info
});
};
Task task = Task.Run(async () => await requestHandler()).ContinueWithOnFaulted(async t =>
{
await requestContext.SendError(t.Exception.ToString());
});
}
catch (Exception ex)
{

View File

@@ -11,6 +11,7 @@ using Microsoft.SqlTools.Hosting.Protocol;
using Microsoft.SqlTools.ServiceLayer.Connection;
using Microsoft.SqlTools.ServiceLayer.Hosting;
using Microsoft.SqlTools.ServiceLayer.Metadata.Contracts;
using Microsoft.SqlTools.ServiceLayer.Utility;
namespace Microsoft.SqlTools.ServiceLayer.Metadata
{
@@ -65,6 +66,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Metadata
RequestContext<MetadataQueryResult> requestContext)
{
try
{
Func<Task> requestHandler = async () =>
{
ConnectionInfo connInfo;
MetadataService.ConnectionServiceInstance.TryFindConnection(
@@ -84,6 +87,12 @@ namespace Microsoft.SqlTools.ServiceLayer.Metadata
{
Metadata = metadata.ToArray()
});
};
Task task = Task.Run(async () => await requestHandler()).ContinueWithOnFaulted(async t =>
{
await requestContext.SendError(t.Exception.ToString());
});
}
catch (Exception ex)
{