Refactor transports to help enable graceful shutdown (#142)

- This also paves the way for better multi-session support
- We should definitely rethink names for the transport API
- For now, I kept the names similar as possible, so we can
  focus on the API shape

Co-authored-by: Stephen Toub <stoub@microsoft.com>
This commit is contained in:
Stephen Halter 2025-03-30 17:10:14 -07:00 • committed by GitHub
commit 2ab9db0878
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,16 @@
using ModelContextProtocol.Protocol.Messages;
using System.Collections.Concurrent;
namespace ModelContextProtocol.Shared;
internal sealed class NotificationHandlers : ConcurrentDictionary<string, List<Func<JsonRpcNotification, Task>>>
{
public void Add(string method, Func<JsonRpcNotification, Task> handler)
{
var handlers = GetOrAdd(method, _ => []);
lock (handlers)
{
handlers.Add(handler);
}
}
}