private static void SubscribeOutputBus(
StandardComponents standardComponents,
ProjectionsStandardComponents projectionsStandardComponents,
RequestResponseQueueForwarder forwarder)
{
var managerOutput = projectionsStandardComponents.MasterOutputBus;
managerOutput.Subscribe<ClientMessage.ReadEvent>(forwarder);
managerOutput.Subscribe<ClientMessage.ReadStreamEventsBackward>(forwarder);
managerOutput.Subscribe<ClientMessage.ReadStreamEventsForward>(forwarder);
managerOutput.Subscribe<ClientMessage.WriteEvents>(forwarder);
managerOutput.Subscribe<ClientMessage.DeleteStream>(forwarder);
managerOutput.Subscribe(
Forwarder.Create<ProjectionManagementMessage.RequestSystemProjections>(standardComponents.MainQueue));
managerOutput.Subscribe(Forwarder.Create<Message>(projectionsStandardComponents.MasterInputQueue));
managerOutput.Subscribe<TimerMessage.Schedule>(standardComponents.TimerService);
managerOutput.Subscribe(Forwarder.Create<AwakeServiceMessage.SubscribeAwake>(standardComponents.MainQueue));
managerOutput.Subscribe(
Forwarder.Create<AwakeServiceMessage.UnsubscribeAwake>(standardComponents.MainQueue));
managerOutput.Subscribe<SystemMessage.SubSystemInitialized>(forwarder);
// self forward all
standardComponents.MainBus.Subscribe(
Forwarder.Create<SystemMessage.StateChangeMessage>(projectionsStandardComponents.MasterInputQueue));
standardComponents.MainBus.Subscribe(
Forwarder.Create<SystemMessage.SystemCoreReady>(projectionsStandardComponents.MasterInputQueue));
projectionsStandardComponents.MasterMainBus.Subscribe(new UnwrapEnvelopeHandler());
}
}