1515using Unicast . Subscriptions ;
1616using Unicast . Subscriptions . MessageDrivenSubscriptions ;
1717
18- public class TestingInMemoryPersistence : PersistenceDefinition
18+ public class TestingInMemoryPersistence : PersistenceDefinition , IPersistenceDefinitionFactory < TestingInMemoryPersistence >
1919{
20- internal TestingInMemoryPersistence ( )
21- {
22- Supports < StorageType . Subscriptions > ( s =>
23- {
24- s . EnableFeatureByDefault < TestingInMemorySubscriptionPersistence > ( ) ;
25- } ) ;
26- }
20+ TestingInMemoryPersistence ( ) => Supports < StorageType . Subscriptions , TestingInMemorySubscriptionPersistence > ( ) ;
21+
22+ public static TestingInMemoryPersistence Create ( ) => new ( ) ;
2723}
2824
2925public static class InMemoryPersistenceExtensions
3026{
31- public static void UseStorage ( this PersistenceExtensions < TestingInMemoryPersistence > extensions , TestingInMemorySubscriptionStorage storageInstance )
32- {
33- extensions . GetSettings ( ) . Set ( "InMemoryPersistence.StorageInstance" , storageInstance ) ;
34- }
27+ public static void UseStorage ( this PersistenceExtensions < TestingInMemoryPersistence > extensions , TestingInMemorySubscriptionStorage storageInstance ) => extensions . GetSettings ( ) . Set ( "InMemoryPersistence.StorageInstance" , storageInstance ) ;
3528}
3629
3730public class TestingInMemorySubscriptionPersistence : Features . Feature
@@ -57,29 +50,31 @@ public Task Subscribe(Subscriber subscriber, MessageType messageType, ContextBag
5750 return Task . FromResult ( true ) ;
5851 }
5952
60- static string BuildKey ( Subscriber subscriber )
61- {
62- return $ "{ subscriber . TransportAddress ?? "" } _{ subscriber . Endpoint ?? "" } ";
63- }
53+ static string BuildKey ( Subscriber subscriber ) => $ "{ subscriber . TransportAddress ?? "" } _{ subscriber . Endpoint ?? "" } ";
6454
6555 public Task Unsubscribe ( Subscriber subscriber , MessageType messageType , ContextBag context , CancellationToken cancellationToken )
6656 {
6757 if ( storage . TryGetValue ( messageType , out var dict ) )
6858 {
6959 dict . TryRemove ( BuildKey ( subscriber ) , out var _ ) ;
7060 }
61+
7162 return Task . FromResult ( true ) ;
7263 }
7364
7465 public Task < IEnumerable < Subscriber > > GetSubscriberAddressesForMessage ( IEnumerable < MessageType > messageTypes , ContextBag context , CancellationToken cancellationToken )
7566 {
7667 var subscribers = messageTypes
7768 . SelectMany ( msgType => storage . TryGetValue ( msgType , out var subs ) ? subs . Values : [ ] )
78- . GroupBy ( s => new { s . TransportAddress , s . Endpoint } ) // Subscriber does not implement IEquatable<T>
69+ . GroupBy ( s => new
70+ {
71+ s . TransportAddress ,
72+ s . Endpoint
73+ } ) // Subscriber does not implement IEquatable<T>
7974 . Select ( g => g . First ( ) ) ;
8075
8176 return Task . FromResult ( subscribers ) ;
8277 }
8378
84- ConcurrentDictionary < MessageType , ConcurrentDictionary < string , Subscriber > > storage = new ConcurrentDictionary < MessageType , ConcurrentDictionary < string , Subscriber > > ( ) ;
79+ readonly ConcurrentDictionary < MessageType , ConcurrentDictionary < string , Subscriber > > storage = new ( ) ;
8580}
0 commit comments