public ServerApplication(Action <string> messageCallback) { _messageCallback = messageCallback; // Were this a production server I'd recommend getting all these types from a // type provider layer (MEF, Castle, etc) var sessionRepository = new SessionRepository(); var fixSessionFacade = new StandardFixFacade(messageCallback); _sessionMediator = new SessionMediator(sessionRepository, fixSessionFacade); _inputQueue = new CommandQueue(); _outputQueue = new CommandQueue(); var asyncProcessing = new TaskBasedCommandProcessingStrategy(); var syncProcessing = new SynchronousCommandProcessingStrategy(); _inputCommandProcessor = new CommandProcessor(asyncProcessing, _inputQueue); _outputCommandProcessor = new CommandProcessor(syncProcessing, _outputQueue); var orderMatcher = new StandardOrderMatcher(); var orderRepository = new StandardOrderRepository(orderMatcher); _orderMediator = new OrderMediator(orderRepository, OnOrderMatched); _commandFactory = new CommandFactory(_inputQueue, _outputQueue, _orderMediator, _sessionMediator); var messageHandlerCommandFactory = new MessageHandlerCommandFactory(_sessionMediator, _commandFactory); var fix42MessageGenerator = new Fix42MessageGenerator(); _fix42MessageHandler = new Fix42MessageHandler(messageHandlerCommandFactory, fix42MessageGenerator, fixSessionFacade, GenExecID); var fix44MessageGenerator = new Fix44MessageGenerator(); _fix44MessageHandler = new Fix44MessageHandler(messageHandlerCommandFactory, fix44MessageGenerator, fixSessionFacade, GenExecID); }
public ServerApplication(Action<string> messageCallback) { _messageCallback = messageCallback; // Were this a production server I'd recommend getting all these types from a // type provider layer (MEF, Castle, etc) var sessionRepository = new SessionRepository(); var fixSessionFacade = new StandardFixFacade(messageCallback); _sessionMediator = new SessionMediator(sessionRepository, fixSessionFacade); _inputQueue = new CommandQueue(); _outputQueue = new CommandQueue(); var asyncProcessing = new TaskBasedCommandProcessingStrategy(); var syncProcessing = new SynchronousCommandProcessingStrategy(); _inputCommandProcessor = new CommandProcessor(asyncProcessing, _inputQueue); _outputCommandProcessor = new CommandProcessor(syncProcessing, _outputQueue); var orderMatcher = new StandardOrderMatcher(); var orderRepository = new StandardOrderRepository(orderMatcher); _orderMediator = new OrderMediator(orderRepository, OnOrderMatched); _commandFactory = new CommandFactory(_inputQueue, _outputQueue, _orderMediator, _sessionMediator); var messageHandlerCommandFactory = new MessageHandlerCommandFactory(_sessionMediator, _commandFactory); var fix42MessageGenerator = new Fix42MessageGenerator(); _fix42MessageHandler = new Fix42MessageHandler(messageHandlerCommandFactory, fix42MessageGenerator, fixSessionFacade, GenExecID); var fix44MessageGenerator = new Fix44MessageGenerator(); _fix44MessageHandler = new Fix44MessageHandler(messageHandlerCommandFactory, fix44MessageGenerator, fixSessionFacade, GenExecID); }