private void InitConnector(CsvEntityRegistry entityRegistry)
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            Connector.Error += error =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));
            };

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));
            };

            Connector.NewSecurity += security => _securitiesWindow.SecurityPicker.Securities.Add(security);

            Connector.NewOrder += order =>
            {
                _ordersWindow.OrderGrid.Orders.Add(order);
                _securitiesWindow.ProcessOrder(order);
            };

            // display order as own volume in quotes window
            Connector.OrderChanged += _securitiesWindow.ProcessOrder;

            // put the registration error into order's table
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;

            Connector.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.NewPortfolio += _portfoliosWindow.PortfolioGrid.Portfolios.Add;
            Connector.NewPosition  += _portfoliosWindow.PortfolioGrid.Positions.Add;

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

            try
            {
                if (File.Exists(_settingsFile))
                {
                    Connector.Load(new XmlSerializer <SettingsStorage>().Deserialize(_settingsFile));
                }
            }
            catch
            {
            }

            if (Connector.StorageAdapter == null)
            {
                return;
            }

            entityRegistry.Init();

            Connector.StorageAdapter.DaysLoad = TimeSpan.FromDays(3);
            //Connector.StorageAdapter.Load();

            ConfigManager.RegisterService <IExchangeInfoProvider>(new StorageExchangeInfoProvider(entityRegistry));
        }
Example #2
0
        private void InitConnector(IEntityRegistry entityRegistry, SnapshotRegistry snapshotRegistry)
        {
            // subscribe on connection successfully event
            Connector.Connected += () =>
            {
                this.GuiAsync(() => ChangeConnectStatus(true));
            };

            // subscribe on connection error event
            Connector.ConnectionError += error => this.GuiAsync(() =>
            {
                ChangeConnectStatus(false);
                MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2959);
            });

            Connector.Disconnected += () => this.GuiAsync(() => ChangeConnectStatus(false));

            // subscribe on error event
            Connector.Error += error =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2955));
            };

            // subscribe on error of market data subscription event
            Connector.MarketDataSubscriptionFailed += (security, msg, error) =>
            {
                this.GuiAsync(() => MessageBox.Show(this, error.ToString(), LocalizedStrings.Str2956Params.Put(msg.DataType, security)));
            };

            Connector.SecurityReceived += (sub, s) => _securitiesWindow.SecurityPicker.Securities.Add(s);

            Connector.NewOrder += order =>
            {
                _ordersWindow.OrderGrid.Orders.Add(order);
                _securitiesWindow.ProcessOrder(order);
            };

            // display order as own volume in quotes window
            Connector.OrderChanged += _securitiesWindow.ProcessOrder;

            // put the registration error into order's table
            Connector.OrderRegisterFailed += _ordersWindow.OrderGrid.AddRegistrationFail;

            Connector.NewMyTrade += _myTradesWindow.TradeGrid.Trades.Add;

            Connector.PositionReceived += (sub, p) => _portfoliosWindow.PortfolioGrid.Positions.TryAdd(p);

            // set market data provider
            _securitiesWindow.SecurityPicker.MarketDataProvider = Connector;

            if (Connector.StorageAdapter == null)
            {
                return;
            }

            entityRegistry.Init();
            snapshotRegistry.Init();

            Connector.LookupAll();

            ConfigManager.RegisterService <IMessageAdapterProvider>(new FullInMemoryMessageAdapterProvider(Connector.Adapter.InnerAdapters));

            try
            {
                if (File.Exists(_settingsFile) || File.Exists(_settingsFile.MakeLegacy()))
                {
                    var ctx = new ContinueOnExceptionContext();
                    ctx.Error += ex => ex.LogError();

                    using (ctx.ToScope())
                        Connector.LoadIfNotNull(_settingsFile.DeserializeWithMigration <SettingsStorage>());
                }
            }
            catch
            {
            }
        }