Beispiel #1
0
        public RabbitServer(ISdkConfigurationInternal config)
        {
            Guard.Argument(config, nameof(config)).NotNull();

            Username      = config.Username;
            Password      = config.Password;
            UseSsl        = config.UseSsl;
            VirtualHost   = config.VirtualHost;
            Port          = config.Port;
            HostAddress   = config.Host;
            SslServerName = config.SslServerName ?? HostAddress;

            ClientProperties = new Dictionary <string, object>
            {
                { "SrMtsSdkType", ".net" },
                { "SrMtsSdkVersion", SdkInfo.GetVersion() },
                { "SrMtsSdkInit", $"{DateTime.Now:yyyyMMddHHmm}" },
                { "SrMtsSdkConnName", "RabbitMQ / Net" },
                { "SrMtsSdkBId", config.BookmakerId }
            };

            AutomaticRecovery = false;

            HeartBeat = 20;
        }
Beispiel #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BuilderFactory"/> class
        /// </summary>
        /// <param name="config">The <see cref="ISdkConfigurationInternal"/> used to set default values of created builders</param>
        /// <param name="marketDescriptionProvider">The <see cref="IMarketDescriptionProvider"/> used for UoF selections</param>
        public BuilderFactory(ISdkConfigurationInternal config, IMarketDescriptionProvider marketDescriptionProvider)
        {
            Guard.Argument(config, nameof(config)).NotNull();
            Guard.Argument(marketDescriptionProvider, nameof(marketDescriptionProvider)).NotNull();

            _config = config;
            _marketDescriptionProvider = marketDescriptionProvider;
        }
Beispiel #3
0
        /// <summary>
        /// Constructs a new instance of the <see cref="MtsSdk"/> class
        /// </summary>
        /// <param name="config">A <see cref="ISdkConfiguration"/> instance representing feed configuration</param>
        /// <param name="loggerFactory">A <see cref="ILoggerFactory"/> used to create <see cref="ILogger"/> used within sdk</param>
        /// <param name="metricsRoot">A <see cref="IMetricsRoot"/> used to provide metrics within sdk</param>
        public MtsSdk(ISdkConfiguration config, ILoggerFactory loggerFactory = null, IMetricsRoot metricsRoot = null)
        {
            Guard.Argument(config, nameof(config)).NotNull();

            LogInit();

            _isDisposed = false;
            _isOpened   = 0;

            _unityContainer = new UnityContainer();
            _unityContainer.RegisterTypes(config, loggerFactory, metricsRoot);
            _config = _unityContainer.Resolve <ISdkConfigurationInternal>();

            _executionLog   = SdkLoggerFactory.GetLoggerForExecution(typeof(MtsSdk));
            _interactionLog = SdkLoggerFactory.GetLoggerForExecution(typeof(MtsSdk));

            LogInit();

            _metricsRoot          = _unityContainer.Resolve <IMetricsRoot>();
            _metricsLogger        = SdkLoggerFactory.GetLoggerForStats(typeof(MtsSdk));
            _metricsTaskScheduler = new AppMetricsTaskScheduler(
                TimeSpan.FromSeconds(_config.StatisticsTimeout),
                async() => { await LogMetricsAsync(); });


            _connectionValidator = _unityContainer.Resolve <ConnectionValidator>();

            BuilderFactory          = _unityContainer.Resolve <IBuilderFactory>();
            _ticketPublisherFactory = _unityContainer.Resolve <ITicketSenderFactory>();

            _entitiesMapper = _unityContainer.Resolve <EntitiesMapper>();

            _rabbitMqMessageReceiverForTickets           = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketCancels     = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketCancelResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketCashouts    = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketCashoutResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketNonSrSettle = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketNonSrSettleResponseMessageReceiver");

            ClientApi        = _unityContainer.Resolve <IMtsClientApi>();
            CustomBetManager = _unityContainer.Resolve <ICustomBetManager>();
            ConnectionStatus = _unityContainer.Resolve <IConnectionStatus>();
            ReportManager    = _unityContainer.Resolve <IReportManager>();

            _autoResetEventsForBlockingRequests        = new ConcurrentDictionary <string, AutoResetEvent>();
            _responsesFromBlockingRequests             = new ConcurrentDictionary <string, ISdkTicket>();
            _ticketsForNonBlockingRequests             = new MemoryCache("TicketsForNonBlockingRequests");
            _lockForTicketsForNonBlockingRequestsCache = new object();

            foreach (var t in Enum.GetValues(typeof(SdkTicketType)))
            {
                var publisher = _ticketPublisherFactory.GetTicketSender((SdkTicketType)t);
                if (publisher != null)
                {
                    publisher.TicketSendFailed += PublisherOnTicketSendFailed;
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Constructs a new instance of the <see cref="MtsSdk"/> class
        /// </summary>
        /// <param name="config">A <see cref="ISdkConfiguration"/> instance representing feed configuration</param>
        public MtsSdk(ISdkConfiguration config)
        {
            Guard.Argument(config, nameof(config)).NotNull();

            LogInit();

            _isDisposed = false;
            _isOpened   = 0;

            _unityContainer = new UnityContainer();
            SdkUnityBootstrapper.RegisterTypes(_unityContainer, config);

            _config = _unityContainer.Resolve <ISdkConfigurationInternal>();
            _connectionValidator = _unityContainer.Resolve <ConnectionValidator>();

            BuilderFactory          = _unityContainer.Resolve <IBuilderFactory>();
            _ticketPublisherFactory = _unityContainer.Resolve <ITicketSenderFactory>();

            _entitiesMapper = _unityContainer.Resolve <EntitiesMapper>();

            _rabbitMqMessageReceiverForTickets           = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketCancels     = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketCancelResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketCashouts    = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketCashoutResponseMessageReceiver");
            _rabbitMqMessageReceiverForTicketNonSrSettle = _unityContainer.Resolve <IRabbitMqMessageReceiver>("TicketNonSrSettleResponseMessageReceiver");

            ClientApi        = _unityContainer.Resolve <IMtsClientApi>();
            CustomBetManager = _unityContainer.Resolve <ICustomBetManager>();
            ConnectionStatus = _unityContainer.Resolve <IConnectionStatus>();
            ReportManager    = _unityContainer.Resolve <IReportManager>();

            _autoResetEventsForBlockingRequests        = new ConcurrentDictionary <string, AutoResetEvent>();
            _responsesFromBlockingRequests             = new ConcurrentDictionary <string, ISdkTicket>();
            _ticketsForNonBlockingRequests             = new MemoryCache("TicketsForNonBlockingRequests");
            _lockForTicketsForNonBlockingRequestsCache = new object();

            foreach (var t in Enum.GetValues(typeof(SdkTicketType)))
            {
                var publisher = _ticketPublisherFactory.GetTicketSender((SdkTicketType)t);
                if (publisher != null)
                {
                    publisher.TicketSendFailed += PublisherOnTicketSendFailed;
                }
            }
        }
Beispiel #5
0
        public BuilderFactoryHelper(ISdkConfigurationInternal configInternal = null)
        {
            if (configInternal == null)
            {
                configInternal = new SdkConfigurationInternal(new SdkConfiguration(SdkConfigurationSectionTest.Create()), null);
            }

            var container = new UnityContainer();
            var config    = (ISdkConfiguration)configInternal;

            container.RegisterTypes(config, null, null);

            container.RegisterInstance <IDataFetcher>("Base", new DataFetcherHelper(UriReplacements), new ContainerControlledLifetimeManager());

            MarketDescriptionCache = container.Resolve <IMarketDescriptionCache>();

            MarketDescriptionProvider = container.Resolve <IMarketDescriptionProvider>();

            BuilderFactory = container.Resolve <IBuilderFactory>();
        }
Beispiel #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ConnectionValidator"/> class
        /// </summary>
        /// <param name="config">A <see cref="ISdkConfiguration"/> instance representing odds configuration</param>
        public ConnectionValidator(ISdkConfigurationInternal config)
        {
            Guard.Argument(config, nameof(config)).NotNull();

            _config = config;
        }