public OrderBooksService( IB2С2RestClient b2C2RestClient, IOrderBookPublisher orderBookPublisher, ITickPricePublisher tickPricePublisher, OrderBooksServiceSettings settings, B2C2ClientSettings webSocketC2ClientSettings, ILogFactory logFactory) { _withWithoutSuffixMapping = new ConcurrentDictionary <string, string>(); _withoutWithSuffixMapping = new ConcurrentDictionary <string, string>(); _orderBooksCache = new ConcurrentDictionary <string, OrderBook>(); _subscriptions = new ConcurrentDictionary <string, string>(); _instrumentsLevels = settings.InstrumentsLevels == null || !settings.InstrumentsLevels.Any() ? throw new ArgumentOutOfRangeException(nameof(_instrumentsLevels)) : settings.InstrumentsLevels; _b2C2RestClient = b2C2RestClient ?? throw new NullReferenceException(nameof(b2C2RestClient)); _webSocketC2ClientSettings = webSocketC2ClientSettings ?? throw new NullReferenceException(nameof(webSocketC2ClientSettings)); _orderBookPublisher = orderBookPublisher ?? throw new NullReferenceException(nameof(orderBookPublisher)); _tickPricePublisher = tickPricePublisher ?? throw new NullReferenceException(nameof(tickPricePublisher)); _logFactory = logFactory; _log = logFactory.CreateLog(this); _reconnectIfNeededInterval = settings.ReconnectIfNeededInterval; _reconnectIfNeededTrigger = new TimerTrigger(nameof(OrderBooksService), settings.ReconnectIfNeededInterval, logFactory, ReconnectIfNeeded); _forceReconnectTrigger = new TimerTrigger(nameof(OrderBooksService), settings.ForceReconnectInterval, logFactory, ForceReconnect); _settings = settings; }
protected override void Load(ContainerBuilder builder) { var webSocketSettings = new B2C2ClientSettings(_settings.WebSocketUrl, _settings.AuthorizationToken); builder.RegisterType <Manager>() .As <IStartupManager>() .As <IShutdownManager>() .AutoWireNonPublicProperties(); // B2C2 Client Library builder.RegisterB2С2RestClient(new B2C2ClientSettings(_settings.RestUrl, _settings.AuthorizationToken)); // Publishers builder.RegisterType <OrderBookPublisher>() .AsSelf() .As <IOrderBookPublisher>() .SingleInstance() .WithParameter(TypedParameter.From(_settings.RabbitMq.OrderBooks)); builder.RegisterType <TickPricePublisher>() .AsSelf() .As <ITickPricePublisher>() .SingleInstance() .WithParameter(TypedParameter.From(_settings.RabbitMq.TickPrices)); // Order books service var orderBooksServiceSettings = new OrderBooksServiceSettings { InstrumentsLevels = _settings.InstrumentLevels, ReconnectIfNeededInterval = _settings.ReconnectIfNeededInterval, ForceReconnectInterval = _settings.ForceReconnectInterval }; builder.RegisterType <OrderBooksService>() .AsSelf() .SingleInstance() .WithParameter(TypedParameter.From(orderBooksServiceSettings)) .WithParameter(TypedParameter.From(webSocketSettings)); // Reports builder.RegisterType <TradeHistoryService>() .AsSelf() .SingleInstance() .WithParameter(TypedParameter.From(_settings.Db.ReportSqlConnString)) .WithParameter(TypedParameter.From(_settings.EnableExportToReportDb)); builder.RegisterType <BalanceHistoryService>() .AsSelf() .SingleInstance() .WithParameter(TypedParameter.From(_settings.Db.ReportSqlConnString)) .WithParameter(TypedParameter.From(_settings.EnableExportToReportDb)); builder.RegisterType <LedgerHistoryService>() .AsSelf() .SingleInstance() .WithParameter(TypedParameter.From(_settings.Db.ReportSqlConnString)) .WithParameter(TypedParameter.From(_settings.EnableExportToReportDb)); }