예제 #1
0
파일: App.xaml.cs 프로젝트: mjheller/wpffix
        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);
            }
        }
예제 #2
0
        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);
        }