protected override void OnStartup(StartupEventArgs args) { base.OnStartup(args); //ShutdownMode = ShutdownMode.OnMainWindowClose; try { _appRunner = new AppRunner(); var fixStrategy = new EmptyFixStrategy(); var messageGenerator = new Fix44MessageGenerator(); var messageSink = new StandardMessageSink(); var execIDGenerator = new GuidExecIDGenerator(); var clOrdIDGenerator = new IncrementingClOrdIDGenerator(); _appRunner.Run(ConfigFilepath, fixStrategy, messageGenerator, messageSink, execIDGenerator, clOrdIDGenerator); } catch (Exception ex) { //TODO Should we really have this? MessageBox.Show( ex.ToString(), "AT Order Book error", MessageBoxButton.OK, MessageBoxImage.Error); //throw new ApplicationException("ATOrderBook Error", ex); } }
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); }