/// <summary>
        /// Initializes a new instance of the <see cref="OddsFeedSession"/> class
        /// </summary>
        /// <param name="messageReceiver"> A <see cref="IMessageReceiver"/> used to provide feed messages</param>
        /// <param name="messageProcessor">A <see cref="IFeedMessageProcessor"/> instance used to process received messages</param>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map the feed messages to messages used by the SDK</param>
        /// <param name="messageValidator">A <see cref="IFeedMessageValidator"/> instance used to validate received messages</param>
        /// <param name="messageDataExtractor">A <see cref="IMessageDataExtractor"/> instance used to extract basic message data from messages which could not be deserialized</param>
        /// <param name="dispatcherStore">A <see cref="IDispatcherStore"/> implementation used to store and access user registered dispatchers</param>
        /// <param name="messageInterest">Specifies the type of messages handled by this <see cref="OddsFeedSession"/></param>
        /// <param name="defaultCultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages as specified in the configuration</param>
        /// <param name="getRoutingKeys">Func to get appropriate routing keys based on the message interest</param>
        public OddsFeedSession(
            IMessageReceiver messageReceiver,
            IFeedMessageProcessor messageProcessor,
            IFeedMessageMapper messageMapper,
            IFeedMessageValidator messageValidator,
            IMessageDataExtractor messageDataExtractor,
            IDispatcherStore dispatcherStore,
            MessageInterest messageInterest,
            IEnumerable <CultureInfo> defaultCultures,
            Func <OddsFeedSession, IEnumerable <string> > getRoutingKeys)
            : base(messageMapper, defaultCultures)
        {
            Contract.Requires(messageReceiver != null);
            Contract.Requires(messageInterest != null);
            Contract.Requires(messageProcessor != null);
            Contract.Requires(messageValidator != null);
            Contract.Requires(messageDataExtractor != null);
            Contract.Requires(dispatcherStore != null);

            MessageReceiver       = messageReceiver;
            _messageProcessor     = messageProcessor;
            _messageValidator     = messageValidator;
            _messageDataExtractor = messageDataExtractor;
            MessageInterest       = messageInterest;

            _sportSpecificDispatchers = dispatcherStore;

            _getRoutingKeys = getRoutingKeys;

            Name = char.ToUpperInvariant(MessageInterest.Name[0]) + MessageInterest.Name.Substring(1);
        }
        public void Init()
        {
            var nameProviderFactoryMock    = new Mock <INameProviderFactory>();
            var nameProviderMock           = new Mock <INameProvider>();
            var mappingProviderFactoryMock = new Mock <IMarketMappingProviderFactory>();

            nameProviderFactoryMock.Setup(m => m.BuildNameProvider(It.IsAny <ISportEvent>(), It.IsAny <int>(), It.IsAny <IReadOnlyDictionary <string, string> >())).Returns(nameProviderMock.Object);

            var namedValuesCacheMock = new Mock <INamedValueCache>();

            namedValuesCacheMock.Setup(x => x.IsValueDefined(It.IsAny <int>())).Returns(true);
            namedValuesCacheMock.Setup(x => x.GetNamedValue(It.IsAny <int>())).Returns((int id) => new NamedValue(id, "somevalue"));

            var namedValuesProviderMock = new Mock <INamedValuesProvider>();

            namedValuesProviderMock.Setup(x => x.VoidReasons).Returns(namedValuesCacheMock.Object);
            namedValuesProviderMock.Setup(x => x.BetStopReasons).Returns(namedValuesCacheMock.Object);
            namedValuesProviderMock.Setup(x => x.BettingStatuses).Returns(namedValuesCacheMock.Object);

            _mapper = new FeedMessageMapper(new TestSportEventFactory(),
                                            nameProviderFactoryMock.Object,
                                            mappingProviderFactoryMock.Object,
                                            namedValuesProviderMock.Object,
                                            ExceptionHandlingStrategy.THROW,
                                            TestProducerManager.Create(),
                                            new Mock <IMarketCacheProvider>().Object,
                                            namedValuesCacheMock.Object);
            _deserializer = new Deserializer <FeedMessage>();
            _validator    = new TestFeedMessageValidator();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsFeedSession"/> class
        /// </summary>
        /// <param name="messageReceiver"> A <see cref="IMessageReceiver"/> used to provide feed messages</param>
        /// <param name="messageProcessor">A <see cref="IFeedMessageProcessor"/> instance used to process received messages</param>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map the feed messages to messages used by the SDK</param>
        /// <param name="messageValidator">A <see cref="IFeedMessageValidator"/> instance used to validate received messages</param>
        /// <param name="messageDataExtractor">A <see cref="IMessageDataExtractor"/> instance used to extract basic message data from messages which could not be deserialized</param>
        /// <param name="dispatcherStore">A <see cref="IDispatcherStore"/> implementation used to store and access user registered dispatchers</param>
        /// <param name="messageInterest">Specifies the type of messages handled by this <see cref="OddsFeedSession"/></param>
        /// <param name="defaultCultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages as specified in the configuration</param>
        /// <param name="getRoutingKeys">Func to get appropriate routing keys based on the message interest</param>
        public OddsFeedSession(
            IMessageReceiver messageReceiver,
            IFeedMessageProcessor messageProcessor,
            IFeedMessageMapper messageMapper,
            IFeedMessageValidator messageValidator,
            IMessageDataExtractor messageDataExtractor,
            IDispatcherStore dispatcherStore,
            MessageInterest messageInterest,
            IEnumerable <CultureInfo> defaultCultures,
            Func <OddsFeedSession, IEnumerable <string> > getRoutingKeys)
            : base(messageMapper, defaultCultures)
        {
            Guard.Argument(messageReceiver, nameof(messageReceiver)).NotNull();
            Guard.Argument(messageInterest, nameof(messageInterest)).NotNull();
            Guard.Argument(messageProcessor, nameof(messageProcessor)).NotNull();
            Guard.Argument(messageValidator, nameof(messageValidator)).NotNull();
            Guard.Argument(messageDataExtractor, nameof(messageDataExtractor)).NotNull();
            Guard.Argument(dispatcherStore, nameof(dispatcherStore)).NotNull();

            MessageReceiver       = messageReceiver;
            _messageProcessor     = messageProcessor;
            _messageValidator     = messageValidator;
            _messageDataExtractor = messageDataExtractor;
            MessageInterest       = messageInterest;

            _sportSpecificDispatchers = dispatcherStore;

            _getRoutingKeys = getRoutingKeys;

            Name = char.ToUpperInvariant(MessageInterest.Name[0]) + MessageInterest.Name.Substring(1);
        }
Esempio n. 4
0
        public void Init()
        {
            _cacheManager      = new CacheManager();
            _dataRouterManager = new TestDataRouterManager(_cacheManager);

            _variantMemoryCache             = new MemoryCache("VariantCache");
            _invariantMemoryCache           = new MemoryCache("InVariantCache");
            _variantDescriptionsMemoryCache = new MemoryCache("VariantDescriptionListCache");

            _timer = new SdkTimer(_timerInterval, _timerInterval);
            _mappingValidatorFactory     = new MappingValidatorFactory();
            _inVariantMdCache            = new InvariantMarketDescriptionCache(_invariantMemoryCache, _dataRouterManager, _mappingValidatorFactory, _timer, TestData.Cultures, _cacheManager);
            _variantMdCache              = new VariantMarketDescriptionCache(_variantMemoryCache, _dataRouterManager, _mappingValidatorFactory, _cacheManager);
            _variantDescriptionListCache = new VariantDescriptionListCache(_variantDescriptionsMemoryCache, _dataRouterManager, _mappingValidatorFactory, _timer, TestData.Cultures, _cacheManager);

            var dataFetcher = new TestDataFetcher();

            var betStopReasonsCache = new NamedValueCache(new NamedValueDataProvider(FileHelper.FindFile("betstop_reasons.xml"), dataFetcher, "betstop_reason"), ExceptionHandlingStrategy.THROW);

            var bettingStatusCache = new NamedValueCache(new NamedValueDataProvider(FileHelper.FindFile("betting_status.xml"), dataFetcher, "betting_status"),
                                                         ExceptionHandlingStrategy.THROW);

            var namedValueProviderMock = new Mock <INamedValuesProvider>();

            namedValueProviderMock.Setup(x => x.BetStopReasons).Returns(betStopReasonsCache);
            namedValueProviderMock.Setup(x => x.BettingStatuses).Returns(bettingStatusCache);

            _validator = new FeedMessageValidator(
                new MarketCacheProvider(_inVariantMdCache, _variantMdCache, _variantDescriptionListCache),
                TestData.Culture,
                namedValueProviderMock.Object,
                TestProducerManager.Create());
        }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsFeedSession"/> class
        /// </summary>
        /// <param name="globalEventDispatcher">A <see cref="IGlobalEventDispatcher"/> used to dispatch global events</param>
        /// <param name="messageReceiver"> A <see cref="IMessageReceiver"/> used to provide feed messages</param>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map the feed messages to messages used by the SDK</param>
        /// <param name="messageValidator">A <see cref="IFeedMessageValidator"/> instance used to validate received messages</param>
        /// <param name="messageDataExtractor">A <see cref="IMessageDataExtractor"/> instance used to extract basic message data from messages which could not be deserialized</param>
        public FeedSystemSession(
            IGlobalEventDispatcher globalEventDispatcher,
            IMessageReceiver messageReceiver,
            IFeedMessageMapper messageMapper,
            IFeedMessageValidator messageValidator,
            IMessageDataExtractor messageDataExtractor)
        {
            Guard.Argument(globalEventDispatcher, nameof(globalEventDispatcher)).NotNull();
            Guard.Argument(messageReceiver, nameof(messageReceiver)).NotNull();
            Guard.Argument(messageMapper, nameof(messageMapper)).NotNull();
            Guard.Argument(messageValidator, nameof(messageValidator)).NotNull();
            Guard.Argument(messageDataExtractor, nameof(messageDataExtractor)).NotNull();

            _globalEventDispatcher = globalEventDispatcher;
            _messageReceiver       = messageReceiver;
            _messageValidator      = messageValidator;
            _messageMapper         = messageMapper;
            _messageDataExtractor  = messageDataExtractor;
        }
Esempio n. 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OddsFeedSession"/> class
        /// </summary>
        /// <param name="globalEventDispatcher">A <see cref="IGlobalEventDispatcher"/> used to dispatch global events</param>
        /// <param name="messageReceiver"> A <see cref="IMessageReceiver"/> used to provide feed messages</param>
        /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map the feed messages to messages used by the SDK</param>
        /// <param name="messageValidator">A <see cref="IFeedMessageValidator"/> instance used to validate received messages</param>
        /// <param name="messageDataExtractor">A <see cref="IMessageDataExtractor"/> instance used to extract basic message data from messages which could not be deserialized</param>
        public FeedSystemSession(
            IGlobalEventDispatcher globalEventDispatcher,
            IMessageReceiver messageReceiver,
            IFeedMessageMapper messageMapper,
            IFeedMessageValidator messageValidator,
            IMessageDataExtractor messageDataExtractor)
        {
            Contract.Requires(globalEventDispatcher != null);
            Contract.Requires(messageReceiver != null);
            Contract.Requires(messageMapper != null);
            Contract.Requires(messageValidator != null);
            Contract.Requires(messageDataExtractor != null);

            _globalEventDispatcher = globalEventDispatcher;
            _messageReceiver       = messageReceiver;
            _messageValidator      = messageValidator;
            _messageMapper         = messageMapper;
            _messageDataExtractor  = messageDataExtractor;
        }