Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Feed"/> class
        /// </summary>
        /// <param name="config">A <see cref="IOddsFeedConfiguration"/> instance representing feed configuration</param>
        /// <param name="isReplay">Value indicating whether the constructed instance will be used to connect to replay server</param>
        protected Feed(IOddsFeedConfiguration config, bool isReplay)
        {
            Contract.Requires(config != null);

            LogInit();

            var container = new UnityContainer();

            container.EnableDebugDiagnostic();
            container.RegisterBaseTypes(config);
            var internalConfig = container.Resolve <IOddsFeedConfigurationInternal>();

            if (isReplay || internalConfig.Environment == SdkEnvironment.Replay)
            {
                internalConfig.EnableReplayServer();
            }
            internalConfig.Load(); // loads bookmaker_details
            container.RegisterTypes(this);
            container.RegisterAdditionalTypes();
            CurrentUnityContainer = container;

            EventRecoveryRequestIssuer   = CurrentUnityContainer.Resolve <IEventRecoveryRequestIssuer>();
            SportDataProvider            = CurrentUnityContainer.Resolve <ISportDataProvider>();
            CashOutProbabilitiesProvider = CurrentUnityContainer.Resolve <ICashOutProbabilitiesProvider>();
            _feedRecoveryManager         = CurrentUnityContainer.Resolve <IFeedRecoveryManager>();
            _connectionValidator         = CurrentUnityContainer.Resolve <ConnectionValidator>();
            InternalConfig           = CurrentUnityContainer.Resolve <IOddsFeedConfigurationInternal>();
            BookingManager           = CurrentUnityContainer.Resolve <IBookingManager>();
            MarketDescriptionManager = CurrentUnityContainer.Resolve <IMarketDescriptionManager>();
            BookmakerDetails         = InternalConfig.BookmakerDetails;
            CustomBetManager         = CurrentUnityContainer.Resolve <ICustomBetManager>();
            try
            {
                ProducerManager = CurrentUnityContainer.Resolve <IProducerManager>();
                if (isReplay || internalConfig.Environment == SdkEnvironment.Replay)
                {
                    ((ProducerManager)ProducerManager).SetIgnoreRecovery(0);
                }
            }
            catch (Exception e)
            {
                Log.Error("Error getting available producers.", e);
                throw;
            }
        }
Exemple #2
0
        public static void Init(TestContext context)
        {
            IUnityContainer container = new UnityContainer().EnableDiagnostic();
            var             config    = TestConfigurationInternal.GetConfig();

            _dispatcher = new Mock <IGlobalEventDispatcher>().Object;

            container.RegisterBaseTypes(config, null, null);

            // we need to override initial loading of bookmaker details and producers
            var bookmakerDetailsProviderMock = new Mock <BookmakerDetailsProvider>("bookmakerDetailsUriFormat",
                                                                                   new TestDataFetcher(),
                                                                                   new Deserializer <bookmaker_details>(),
                                                                                   new BookmakerDetailsMapperFactory());

            bookmakerDetailsProviderMock.Setup(x => x.GetData(It.IsAny <string>())).Returns(TestConfigurationInternal.GetBookmakerDetails());
            var defaultBookmakerDetailsProvider = bookmakerDetailsProviderMock.Object;

            container.RegisterInstance <IDataProvider <BookmakerDetailsDTO> >(defaultBookmakerDetailsProvider, new ContainerControlledLifetimeManager());
            container.RegisterInstance <BookmakerDetailsProvider>(defaultBookmakerDetailsProvider, new ContainerControlledLifetimeManager());

            //override
            container.RegisterType <IProducerManager, ProducerManager>(
                new ContainerControlledLifetimeManager(),
                new InjectionConstructor(
                    new TestProducersProvider(),
                    config));

            container.RegisterTypes(_dispatcher, config);

            //var x = container.Registrations.Where(w => w.MappedToType == typeof(ProducerManager));

            var newConfig = new OddsFeedConfigurationInternal(config, defaultBookmakerDetailsProvider);

            newConfig.Load();
            container.RegisterInstance <IOddsFeedConfiguration>(newConfig, new ContainerControlledLifetimeManager());
            container.RegisterInstance <IOddsFeedConfigurationInternal>(newConfig, new ContainerControlledLifetimeManager());

            container.RegisterAdditionalTypes();

            _childContainer1 = container.CreateChildContainer();
            _childContainer2 = container.CreateChildContainer();
        }