//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System.Collections.Concurrent;
using Microsoft.SqlTools.Hosting.Contracts;
namespace Microsoft.SqlTools.Hosting.Protocol
{
///
/// Provides context for a received event so that handlers
/// can write events back to the channel.
///
public class EventContext : IEventSender
{
internal readonly BlockingCollection messageQueue;
public EventContext(BlockingCollection outgoingMessageQueue)
{
// TODO: Either 1) make this constructor internal and provide a test framework for validating
// or 2) extract an interface for eventcontext to allow users to mock
messageQueue = outgoingMessageQueue;
}
public void SendEvent(EventType eventType, TParams eventParams)
{
messageQueue.Add(Message.CreateEvent(eventType, eventParams));
}
}
}