mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-15 09:35:37 -05:00
* Move unused forked code to external directory * Fix SLN build errors * Add back resource provider core since it's referenced by main resource provider project * Update PackageProjects step of pipeline
58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
//
|
|
// Copyright (c) Microsoft. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
//
|
|
|
|
using System;
|
|
using System.Collections.Concurrent;
|
|
using Microsoft.SqlTools.Hosting.Contracts;
|
|
using Microsoft.SqlTools.Hosting.Contracts.Internal;
|
|
|
|
namespace Microsoft.SqlTools.Hosting.Protocol
|
|
{
|
|
public class RequestContext<TResult> : IEventSender
|
|
{
|
|
internal readonly BlockingCollection<Message> messageQueue;
|
|
internal readonly Message requestMessage;
|
|
|
|
public RequestContext(Message message, BlockingCollection<Message> outgoingMessageQueue)
|
|
{
|
|
// TODO: Either 1) make this constructor internal and provide a tes framework for validating
|
|
// or 2) extract an interface for requestcontext to allow users to mock
|
|
requestMessage = message;
|
|
messageQueue = outgoingMessageQueue;
|
|
}
|
|
|
|
public virtual void SendResult(TResult resultDetails)
|
|
{
|
|
Message message = Message.CreateResponse(requestMessage.Id, resultDetails);
|
|
messageQueue.Add(message);
|
|
}
|
|
|
|
public virtual void SendEvent<TParams>(EventType<TParams> eventType, TParams eventParams)
|
|
{
|
|
Message message = Message.CreateEvent(eventType, eventParams);
|
|
messageQueue.Add(message);
|
|
}
|
|
|
|
public virtual void SendError(string errorMessage, int errorCode = 0)
|
|
{
|
|
// Build the error message
|
|
Error error = new Error
|
|
{
|
|
Message = errorMessage,
|
|
Code = errorCode
|
|
};
|
|
Message message = Message.CreateResponseError(requestMessage.Id, error);
|
|
messageQueue.Add(message);
|
|
}
|
|
|
|
public virtual void SendError(Exception e)
|
|
{
|
|
// Overload to use the parameterized error handler
|
|
SendError(e.Message, e.HResult);
|
|
}
|
|
}
|
|
}
|
|
|