Skip to content

Commit 2a86f8a

Browse files
committed
- observer refactoring
1 parent 638579c commit 2a86f8a

29 files changed

Lines changed: 198 additions & 80 deletions

Shuttle.Recall/EventProcessing/EventProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public IEventProcessor Start()
3939

4040
foreach (var eventProjection in _projections)
4141
{
42-
var processorThread = new ProcessorThread(string.Format("Projection-{0}", eventProjection.Name),
42+
var processorThread = new ProcessorThread($"Projection-{eventProjection.Name}",
4343
new ProjectionProcessor(_configuration, _pipelineFactory, eventProjection));
4444

4545
processorThread.Start();

Shuttle.Recall/EventStore.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using Shuttle.Core.Container;
34
using Shuttle.Core.Contract;
45
using Shuttle.Core.Pipelines;
@@ -158,16 +159,36 @@ public static void Register(IComponentRegistry registry, IEventStoreConfiguratio
158159
registry.Register(type, type, Lifestyle.Transient);
159160
}
160161

162+
var observers = new List<Type>();
163+
161164
foreach (var type in reflectionService.GetTypesAssignableTo<IPipelineObserver>(typeof(EventStore).Assembly))
162165
{
163-
if (type.IsInterface || registry.IsRegistered(type))
166+
if (type.IsInterface || type.IsAbstract)
164167
{
165168
continue;
166169
}
167170

168-
registry.Register(type, type, Lifestyle.Singleton);
171+
var interfaceType = type.InterfaceMatching($"I{type.Name}");
172+
173+
if (interfaceType != null)
174+
{
175+
if (registry.IsRegistered(type))
176+
{
177+
continue;
178+
}
179+
180+
registry.Register(interfaceType, type, Lifestyle.Singleton);
181+
}
182+
else
183+
{
184+
throw new ApplicationException(string.Format(Resources.ObserverInterfaceMissingException, type.Name));
185+
}
186+
187+
observers.Add(type);
169188
}
170189

190+
registry.RegisterCollection(typeof(IPipelineObserver), observers, Lifestyle.Singleton);
191+
171192
registry.AttemptRegister<IEventStore, EventStore>();
172193
registry.AttemptRegister<IEventProcessor, EventProcessor>();
173194
}

Shuttle.Recall/Pipeline/Observers/AcknowledgeEventObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class AcknowledgeEventObserver : IPipelineObserver<OnAcknowledgeEvent>
6+
public interface IAcknowledgeEventObserver : IPipelineObserver<OnAcknowledgeEvent>
7+
{
8+
}
9+
10+
public class AcknowledgeEventObserver : IAcknowledgeEventObserver
711
{
812
private readonly IProjectionRepository _repository;
913
private readonly IProjectionSequenceNumberTracker _tracker;

Shuttle.Recall/Pipeline/Observers/EventProjection/GetProjectionSequenceNumberObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class GetProjectionSequenceNumberObserver : IPipelineObserver<OnGetProjectionSequenceNumber>
6+
public interface IGetProjectionSequenceNumberObserver : IPipelineObserver<OnGetProjectionSequenceNumber>
7+
{
8+
}
9+
10+
public class GetProjectionSequenceNumberObserver : IGetProjectionSequenceNumberObserver
711
{
812
private readonly IProjectionRepository _projectionRepository;
913
private readonly IProjectionSequenceNumberTracker _tracker;

Shuttle.Recall/Pipeline/Observers/EventProjection/ProcessEventObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
namespace Shuttle.Recall
77
{
8-
public class ProcessEventObserver : IPipelineObserver<OnProcessEvent>
8+
public interface IProcessEventObserver : IPipelineObserver<OnProcessEvent>
9+
{
10+
}
11+
12+
public class ProcessEventObserver : IProcessEventObserver
913
{
1014
private readonly ILog _log;
1115

Shuttle.Recall/Pipeline/Observers/EventProjection/ProjectionEventEnvelopeObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class ProjectionEventEnvelopeObserver : IPipelineObserver<OnGetProjectionEventEnvelope>
6+
public interface IProjectionEventEnvelopeObserver : IPipelineObserver<OnGetProjectionEventEnvelope>
7+
{
8+
}
9+
10+
public class ProjectionEventEnvelopeObserver : IProjectionEventEnvelopeObserver
711
{
812
private readonly IPipelineFactory _pipelineFactory;
913

Shuttle.Recall/Pipeline/Observers/EventProjection/ProjectionPrimitiveEventObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class ProjectionPrimitiveEventObserver : IPipelineObserver<OnGetProjectionPrimitiveEvent>
6+
public interface IProjectionPrimitiveEventObserver : IPipelineObserver<OnGetProjectionPrimitiveEvent>
7+
{
8+
}
9+
10+
public class ProjectionPrimitiveEventObserver : IProjectionPrimitiveEventObserver
711
{
812
private readonly IEventStoreConfiguration _configuration;
913
private readonly IPrimitiveEventQueue _queue;

Shuttle.Recall/Pipeline/Observers/EventStream/AssembleEventEnvelopeObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class AssembleEventEnvelopeObserver : IPipelineObserver<OnAssembleEventEnvelope>
6+
public interface IAssembleEventEnvelopeObserver : IPipelineObserver<OnAssembleEventEnvelope>
7+
{
8+
}
9+
10+
public class AssembleEventEnvelopeObserver : IAssembleEventEnvelopeObserver
711
{
812
private readonly IEventStoreConfiguration _configuration;
913

Shuttle.Recall/Pipeline/Observers/EventStream/AssembleEventEnvelopesObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44

55
namespace Shuttle.Recall
66
{
7-
public class AssembleEventEnvelopesObserver : IPipelineObserver<OnAssembleEventEnvelopes>
7+
public interface IAssembleEventEnvelopesObserver : IPipelineObserver<OnAssembleEventEnvelopes>
8+
{
9+
}
10+
11+
public class AssembleEventEnvelopesObserver : IAssembleEventEnvelopesObserver
812
{
913
private readonly IPipelineFactory _pipelineFactory;
1014

Shuttle.Recall/Pipeline/Observers/EventStream/AssembleEventStreamObserver.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33

44
namespace Shuttle.Recall
55
{
6-
public class AssembleEventStreamObserver : IPipelineObserver<OnAssembleEventStream>
6+
public interface IAssembleEventStreamObserver : IPipelineObserver<OnAssembleEventStream>
7+
{
8+
}
9+
10+
public class AssembleEventStreamObserver : IAssembleEventStreamObserver
711
{
812
private readonly IEventMethodInvoker _eventMethodInvoker;
913

0 commit comments

Comments
 (0)