diff --git a/src/ZeroMessenger/AnonymousMessageHandler.cs b/src/ZeroMessenger/AnonymousMessageHandler.cs index addca0b..df5169e 100644 --- a/src/ZeroMessenger/AnonymousMessageHandler.cs +++ b/src/ZeroMessenger/AnonymousMessageHandler.cs @@ -22,4 +22,12 @@ protected override ValueTask HandleAsyncCore(T message, CancellationToken cancel { return handler(message, cancellationToken); } -} \ No newline at end of file +} + +internal sealed class AnonymousAsyncMessageHandler(TState state, Func handler) : AsyncMessageHandler +{ + protected override ValueTask HandleAsyncCore(T message, CancellationToken cancellationToken = default) + { + return handler(message, state, cancellationToken); + } +} diff --git a/src/ZeroMessenger/MessageSubscriberExtensions.cs b/src/ZeroMessenger/MessageSubscriberExtensions.cs index 200a47d..329f329 100644 --- a/src/ZeroMessenger/MessageSubscriberExtensions.cs +++ b/src/ZeroMessenger/MessageSubscriberExtensions.cs @@ -21,4 +21,10 @@ public static IDisposable SubscribeAwait(this IMessageSubscriber subscribe { return subscriber.SubscribeAwait(new AnonymousAsyncMessageHandler(handler), subscribeStrategy); } -} \ No newline at end of file + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static IDisposable SubscribeAwait(this IMessageSubscriber subscriber, TState state, Func handler, AsyncSubscribeStrategy subscribeStrategy = AsyncSubscribeStrategy.Sequential) + { + return subscriber.SubscribeAwait(new AnonymousAsyncMessageHandler(state, handler), subscribeStrategy); + } +}