Ejemplo n.º 1
0
        public async static Task ReadInstrumentsFees()
        {
            //http://192.168.1.80:5123
            // var writer = new MyNoSqlServerDataWriter<SpotInstrumentFeesNoSqlEntity>(GetUrl, SpotInstrumentFeesNoSqlEntity.TableName, false);
            // var entities = await writer.GetAsync();
            // Console.WriteLine(JsonConvert.SerializeObject(entities));

            //192.168.1.80:5125
            var myNoSqlClient = new MyNoSqlTcpClient(GetUrl, "local");
            var subs          = new MyNoSqlReadRepository <SpotInstrumentFeesNoSqlEntity>(myNoSqlClient,
                                                                                          SpotInstrumentFeesNoSqlEntity.TableName);

            myNoSqlClient.Start();
            Thread.Sleep(10000);

            var entities = subs.Get();

            Console.WriteLine(JsonConvert.SerializeObject(entities));
            //
            // var entity = subs.Get(SpotInstrumentFeesNoSqlEntity.GeneratePartitionKey("jetwallet"),
            //     SpotInstrumentFeesNoSqlEntity.GenerateRowKey("ALGOUSD"));
            //
            // Console.WriteLine(JsonConvert.SerializeObject(entity));
            //
            // var entities = subs.Get(SpotInstrumentFeesNoSqlEntity.GeneratePartitionKey("jetwallet"));
            //
            // Console.WriteLine(JsonConvert.SerializeObject(entities));
            //
            // var entities1 = subs.Get();
            //
            // Console.WriteLine(JsonConvert.SerializeObject(entities1));
        }
 public LifetimeManager(
     ILogger <LifetimeManager> logger,
     MyNoSqlTcpClient client,
     IMyNoSqlServerDataReader <SessionEntity> sessionReader,
     IMyNoSqlServerDataReader <RegistrationTokenEntity> registrationTokenReader,
     IMyNoSqlServerDataReader <ClientWalletEntity> clientWalletReader,
     IMyNoSqlServerDataReader <AssetsEntity> assetsReader,
     IMyNoSqlServerDataReader <AssetPairsEntity> assetPairsReader,
     IMyNoSqlServerDataReader <PersonalDataEntity> personalDataReader,
     IMyNoSqlServerDataReader <AuthDataEntity> authDataReader,
     IMyNoSqlServerDataReader <AuthDataIndexByIdEntity> authIndexNyIdDataReader,
     IMyNoSqlServerDataReader <ClientProfileEntity> clientProfileDataReader,
     IMyNoSqlServerDataReader <OrderBookEntity> orderBookDataReader,
     IMyNoSqlServerDataReader <PriceEntity> priceDataReader
     )
 {
     _logger                  = logger;
     _client                  = client;
     _sessionReader           = sessionReader;
     _registrationTokenReader = registrationTokenReader;
     _clientWalletReader      = clientWalletReader;
     _assetsReader            = assetsReader;
     _assetPairsReader        = assetPairsReader;
     _personalDataReader      = personalDataReader;
     _authDataReader          = authDataReader;
     _authIndexNyIdDataReader = authIndexNyIdDataReader;
     _clientProfileDataReader = clientProfileDataReader;
     _orderBookDataReader     = orderBookDataReader;
     _priceDataReader         = priceDataReader;
 }
Ejemplo n.º 3
0
        private void MyNoSql(ContainerBuilder builder)
        {
            _noSqlClient = new MyNoSqlTcpClient(
                () => Config.MyNoSqlServer.ReaderServiceUrl,
                $"{ApplicationInformation.AppName}-{Environment.MachineName}");

            builder.Register(ctx => _noSqlClient)
            .AsSelf()
            .SingleInstance();


            RegisterNoSqlReaderAndWriter <SessionEntity>(builder, MyNoSqlServerTables.SessionsTableName);
            RegisterNoSqlReaderAndWriter <RegistrationTokenEntity>(builder, MyNoSqlServerTables.RegistrationTokenTableName);

            RegisterNoSqlReaderAndWriter <ClientWalletEntity>(builder, MyNoSqlServerTables.ClientWalletTableName);
            RegisterNoSqlReaderAndWriter <ClientWalletIndexByIdEntity>(builder, MyNoSqlServerTables.ClientWalletIndexedByIdTableName);

            RegisterNoSqlReaderAndWriter <ClientProfileEntity>(builder, MyNoSqlServerTables.ClientProfileTableName);

            #region Mock
            RegisterNoSqlReaderAndWriter <PersonalDataEntity>(builder, MyNoSqlServerTables.PersonalDataTableName);
            RegisterNoSqlReaderAndWriter <AuthDataEntity>(builder, MyNoSqlServerTables.AuthDataTableName);
            RegisterNoSqlReaderAndWriter <AuthDataIndexByIdEntity>(builder, MyNoSqlServerTables.AuthDataIndexByIdTableName);



            #endregion

            RegisterNoSqlReader <AssetsEntity>(builder, SetupMyNoSqlAssetService.AssetsTableName);
            RegisterNoSqlReader <AssetPairsEntity>(builder, SetupMyNoSqlAssetService.AssetPairsTableName);

            RegisterNoSqlReader <OrderBookEntity>(builder, OrderBookEntity.OrderBookTableName);
            RegisterNoSqlReader <PriceEntity>(builder, PriceEntity.PriceTableName);
        }
Ejemplo n.º 4
0
        protected override void ConfigureContainerExt(ContainerBuilder builder)
        {
            builder.RegisterInstance(Config.Auth).AsSelf().SingleInstance();

            builder.RegisterType <PushNotificator>()
            .As <IPushNotificator>()
            .As <IStartable>()
            .AutoActivate()
            .SingleInstance();

            builder.RegisterInstance(Config.FireBaseMessaging)
            .AsSelf()
            .SingleInstance();

            builder.RegisterType <MyNoSqlLifetimeManager>()
            .As <IStartable>()
            .AutoActivate()
            .SingleInstance();

            var noSqlClient = new MyNoSqlTcpClient(
                () => Config.MyNoSqlServer.ReaderServiceUrl,
                $"{ApplicationInformation.AppName}-{Environment.MachineName}");

            builder.Register(ctx => noSqlClient)
            .AsSelf()
            .As <IMyNoSqlSubscriber>()
            .SingleInstance();

            RegisterNoSqlReaderAndWriter <ApprovalRequestMyNoSqlEntity>(builder, ApprovalRequestMyNoSqlEntity.TableName);
            RegisterNoSqlReaderAndWriter <ValidatorLinkEntity>(builder, ValidatorLinkEntity.TableName);
            RegisterNoSqlReaderAndWriter <PingMessageMyNoSqlEntity>(builder, PingMessageMyNoSqlEntity.TableName);
        }
Ejemplo n.º 5
0
 public ApplicationManager(
     MyNoSqlTcpClient noSqlTcpClient,
     IMyNoSqlServerDataReader <PriceEntity> pricesReader,
     IMyNoSqlServerDataReader <TickerEntity> tickerReader,
     IMyNoSqlServerDataReader <OrderbookEntity> orderbookReader,
     IMyNoSqlServerDataReader <BalanceEntity> balanceReader,
     IMyNoSqlServerDataReader <OrderEntity> orderReader,
     IMyNoSqlServerDataReader <TradeEntity> tradeReader,
     IStreamService <PriceUpdate> priceStraem,
     IStreamService <TickerUpdate> tickerStream,
     IStreamService <Orderbook> orderbookStream,
     IStreamService <BalanceUpdate> balanceStream,
     IStreamService <OrderUpdate> orderStream,
     IStreamService <TradeUpdate> tradeStream,
     IMapper mapper
     )
 {
     _noSqlTcpClient  = noSqlTcpClient;
     _pricesReader    = pricesReader;
     _tickerReader    = tickerReader;
     _orderbookReader = orderbookReader;
     _balanceReader   = balanceReader;
     _orderReader     = orderReader;
     _tradeReader     = tradeReader;
     _priceStraem     = priceStraem;
     _tickerStream    = tickerStream;
     _orderbookStream = orderbookStream;
     _balanceStream   = balanceStream;
     _orderStream     = orderStream;
     _tradeStream     = tradeStream;
     _mapper          = mapper;
 }
Ejemplo n.º 6
0
 public ApplicationLifetimeManager(IHostApplicationLifetime appLifetime,
                                   ILogger <ApplicationLifetimeManager> logger,
                                   MyNoSqlTcpClient myNoSqlClient)
     : base(appLifetime)
 {
     _myNoSqlClient = myNoSqlClient;
     _logger        = logger;
 }
Ejemplo n.º 7
0
 public ApplicationLifetimeManager(IHostApplicationLifetime appLifetime,
                                   ILogger <ApplicationLifetimeManager> logger, MyNoSqlTcpClient myNoSqlTcpClient,
                                   LiquidityConverterSettingsManager liquidityConverterSettingsManager)
     : base(appLifetime)
 {
     _logger           = logger;
     _myNoSqlTcpClient = myNoSqlTcpClient;
     _liquidityConverterSettingsManager = liquidityConverterSettingsManager;
 }
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            _myNoSqlClient = new MyNoSqlTcpClient(
                Program.ReloadedSettings(e => e.MyNoSqlReaderHostPort),
                ApplicationEnvironment.HostName ??
                $"{ApplicationEnvironment.AppName}:{ApplicationEnvironment.AppVersion}");
        }
        public MarketServiceClient(
            string myNoSqlServerReaderHost,
            string marketServiceHttpApiUrl)
        {
            var host = Environment.GetEnvironmentVariable("HOST") ?? Environment.MachineName;

            _httpClient = new LykkeMarketProfile(new Uri(marketServiceHttpApiUrl));

            _myNoSqlClient = new MyNoSqlTcpClient(() => myNoSqlServerReaderHost, host);

            _readerAssetPairNoSql = new MyNoSqlReadRepository <AssetPairPriceNoSql>(_myNoSqlClient, AssetPairPriceNoSql.TableName);
        }
        public AssetsServiceUserDataClient(string myNoSqlServerReaderHostPort, string assetServiceHttpApiUrl, ILogFactory logFactory)
        {
            _log = logFactory.CreateLog(this);
            var host = Environment.GetEnvironmentVariable("HOST") ?? Environment.MachineName;

            _httpClient = new AssetsServiceHttp(new Uri(assetServiceHttpApiUrl));

            _myNoSqlClient                  = new MyNoSqlTcpClient(() => myNoSqlServerReaderHostPort, host);
            _readerAssetConditionNoSql      = new MyNoSqlReadRepository <AssetConditionNoSql>(_myNoSqlClient, AssetConditionNoSql.TableName);
            _readerWatchListCustomNoSql     = new MyNoSqlReadRepository <WatchListCustomNoSql>(_myNoSqlClient, WatchListCustomNoSql.TableNameCustomWatchList);
            _readerWatchListPredefinedNoSql = new MyNoSqlReadRepository <WatchListPredefinedNoSql>(_myNoSqlClient, WatchListPredefinedNoSql.TableNamePredefinedWatchList);
        }
 public MyNoSqlLifetimeManager(
     ILogger <MyNoSqlLifetimeManager> logger,
     MyNoSqlTcpClient client,
     IMyNoSqlServerDataReader <ApprovalRequestMyNoSqlEntity> approvalRequestReader,
     IMyNoSqlServerDataReader <ValidatorLinkEntity> validatorLinkEntityReader,
     IMyNoSqlServerDataReader <PingMessageMyNoSqlEntity> pingMessageReader)
 {
     _logger = logger;
     _client = client;
     _approvalRequestReader     = approvalRequestReader;
     _validatorLinkEntityReader = validatorLinkEntityReader;
     _pingMessageReader         = pingMessageReader;
 }
Ejemplo n.º 12
0
 public ApplicationLifetimeManager(
     IHostApplicationLifetime appLifetime,
     ILogger <ApplicationLifetimeManager> logger,
     MyNoSqlTcpClient myNoSqlTcpClient,
     ServiceBusLifeTime myServiceBusTcpClient,
     WithdrawalProcessingJob withdrawalProcessingJob)
     : base(appLifetime)
 {
     _logger                  = logger;
     _myNoSqlTcpClient        = myNoSqlTcpClient;
     _myServiceBusTcpClient   = myServiceBusTcpClient;
     _withdrawalProcessingJob = withdrawalProcessingJob;
 }
        private void RegisterNoSqlClient(string brokerId)
        {
            MyNoSqlTcpClient client;

            lock (_gate)
            {
                if (_myNoSqlSubscriberByBroker.TryGetValue(brokerId, out client))
                {
                    return;
                }

                client = new MyNoSqlTcpClient(_getMyNoSqlHostPort, $"{_appName}-{brokerId}");


                _minuteBidAskReaderByBroker[brokerId] = new MyNoSqlReadRepository <CandleBidAskNoSql>(client, CandleBidAskNoSql.TableNameMinute(brokerId));
                _hourBidAskReaderByBroker[brokerId]   = new MyNoSqlReadRepository <CandleBidAskNoSql>(client, CandleBidAskNoSql.TableNameHour(brokerId));
                _dayBidAskReaderByBroker[brokerId]    = new MyNoSqlReadRepository <CandleBidAskNoSql>(client, CandleBidAskNoSql.TableNameDay(brokerId));
                _monthBidAskReaderByBroker[brokerId]  = new MyNoSqlReadRepository <CandleBidAskNoSql>(client, CandleBidAskNoSql.TableNameMonth(brokerId));

                _minuteTradeReaderByBroker[brokerId] = new MyNoSqlReadRepository <CandleTradeNoSql>(client, CandleTradeNoSql.TableNameMinute(brokerId));
                _hourTradeReaderByBroker[brokerId]   = new MyNoSqlReadRepository <CandleTradeNoSql>(client, CandleTradeNoSql.TableNameHour(brokerId));
                _dayTradeReaderByBroker[brokerId]    = new MyNoSqlReadRepository <CandleTradeNoSql>(client, CandleTradeNoSql.TableNameDay(brokerId));
                _monthTradeReaderByBroker[brokerId]  = new MyNoSqlReadRepository <CandleTradeNoSql>(client, CandleTradeNoSql.TableNameMonth(brokerId));

                _myNoSqlSubscriberByBroker[brokerId] = client;
            }

            client.Start();

            //todo: use wait initialization

            var index = 0;

            while (index < 50)
            {
                if (_minuteBidAskReaderByBroker[brokerId].Count() > 0 &&
                    _hourBidAskReaderByBroker[brokerId].Count() > 0 &&
                    _dayBidAskReaderByBroker[brokerId].Count() > 0 &&
                    _monthBidAskReaderByBroker[brokerId].Count() > 0 &&
                    _minuteTradeReaderByBroker[brokerId].Count() > 0 &&
                    _hourTradeReaderByBroker[brokerId].Count() > 0 &&
                    _dayTradeReaderByBroker[brokerId].Count() > 0 &&
                    _monthTradeReaderByBroker[brokerId].Count() > 0)
                {
                    break;
                }

                Thread.Sleep(100);
                index++;
            }
        }
        protected override void Load(ContainerBuilder builder)
        {
            var myNoSqlClient = new MyNoSqlTcpClient(
                Program.ReloadedSettings(e => e.MyNoSqlReaderHostPort),
                ApplicationEnvironment.HostName ??
                $"{ApplicationEnvironment.AppName}:{ApplicationEnvironment.AppVersion}");

            builder.RegisterAssetsDictionaryClients(myNoSqlClient);
            builder.RegisterMatchingEngineOrderBookClient(myNoSqlClient);
            builder.RegisterFeesSettingsClients(myNoSqlClient);
            builder.RegisterSpotInstrumentFeesClients(myNoSqlClient);
            builder.RegisterMatchingEngineGrpcClient(cashServiceGrpcUrl: Program.Settings.MatchingEngineCashGrpcServiceUrl, tradingServiceGrpcUrl: Program.Settings.MatchingEngineTradingGrpcServiceUrl);

            builder.RegisterInstance(myNoSqlClient).AsSelf().SingleInstance();
        }
        public AssetsServiceClient(
            string myNoSqlServerReaderHostPort,
            string assetServiceHttpApiUrl)
        {
            var host = Environment.GetEnvironmentVariable("HOST") ?? Environment.MachineName;

            _httpClient = new AssetsServiceHttp(new Uri(assetServiceHttpApiUrl));

            _myNoSqlClient = new MyNoSqlTcpClient(() => myNoSqlServerReaderHostPort, host);

            _readerAssetAttributeNoSql    = new MyNoSqlReadRepository <AssetAttributeNoSql>(_myNoSqlClient, AssetAttributeNoSql.TableName);
            _readerAssetCategoryNoSql     = new MyNoSqlReadRepository <AssetCategoryNoSql>(_myNoSqlClient, AssetCategoryNoSql.TableName);
            _readerAssetExtendedInfoNoSql = new MyNoSqlReadRepository <AssetExtendedInfoNoSql>(_myNoSqlClient, AssetExtendedInfoNoSql.TableName);
            _readerAssetNoSql             = new MyNoSqlReadRepository <AssetNoSql>(_myNoSqlClient, AssetNoSql.TableName);
            _readerAssetPairNoSql         = new MyNoSqlReadRepository <AssetPairNoSql>(_myNoSqlClient, AssetPairNoSql.TableName);
        }
        protected override void Load(ContainerBuilder builder)
        {
            var myNoSqlClient = new MyNoSqlTcpClient(
                Program.ReloadedSettings(e => e.MyNoSqlReaderHostPort),
                ApplicationEnvironment.HostName ?? $"{ApplicationEnvironment.AppName}:{ApplicationEnvironment.AppVersion}");

            builder.RegisterInstance(myNoSqlClient).AsSelf().SingleInstance();

            RegisterMyNoSqlWriter <SpotSessionNoSql>(builder, SpotSessionNoSql.TableName);

            builder.RegisterClientRegistrationClient(myNoSqlClient, Program.Settings.RegistrationGrpcServiceUrl);
            builder.RegisterClientWalletsClients(myNoSqlClient, Program.Settings.ClientWalletsGrpcServiceUrl);

            builder.RegisterType <DatabaseContextFactory>().AsSelf().SingleInstance();

            builder.RegisterType <SessionAuditServiceService>().As <ISessionAuditService>().SingleInstance();
        }
        private static void CheckNoSql()
        {
            var myNoSqlClient = new MyNoSqlTcpClient(() => "192.168.10.80:5125", "TestApp");
            var subs          = new MyNoSqlReadRepository <OrderBookNoSql>(myNoSqlClient, OrderBookNoSql.TableName);

            myNoSqlClient.Start();

            IOrderBookService client = new OrderBookCache(subs);

            Console.Write("Symbol: ");
            var cmd    = Console.ReadLine();
            var symbol = "";

            while (cmd != "exit")
            {
                Console.Clear();
                if (!string.IsNullOrEmpty(cmd))
                {
                    symbol = cmd;
                }

                Console.WriteLine($"Symbol: {symbol}");
                var book = client.GetOrderBook("jetwallet", symbol);

                if (book != null)
                {
                    foreach (var level in book.Where(e => e.Volume < 0).OrderByDescending(e => e.Price))
                    {
                        Console.WriteLine($"\t{level.Price}\t{level.Volume}");
                    }

                    Console.WriteLine();

                    foreach (var level in book.Where(e => e.Volume > 0).OrderByDescending(e => e.Price))
                    {
                        Console.WriteLine($"{level.Volume}\t{level.Price}");
                    }
                }


                Console.WriteLine();
                Console.WriteLine();
                Console.Write("Symbol: ");
                cmd = Console.ReadLine();
            }
        }
Ejemplo n.º 18
0
        public static async Task TestReplaceAsync(string hostPort, string serverUrl)
        {
            var dataWriter = new MyNoSqlServerDataWriter <ReplaceEntity>(() => serverUrl, "test", false);

            var client = new MyNoSqlTcpClient(() => hostPort, "test-app");

            client.Start();


            var dataReader = new MyNoSqlReadRepository <ReplaceEntity>(client, "test");
            await Task.Delay(3000);



            GetData(dataReader);
            await UpdateData(dataWriter);

            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            GetData(dataReader);
            await Task.Delay(3000);

            //client.Stop();
        }
Ejemplo n.º 19
0
 public StreamsManager(
     MyNoSqlTcpClient noSqlTcpClient,
     IMyNoSqlServerDataReader <PriceEntity> pricesReader,
     IMyNoSqlServerDataReader <TickerEntity> tickerReader,
     IMyNoSqlServerDataReader <OrderbookEntity> orderbookReader,
     IMyNoSqlServerDataReader <BalanceEntity> balanceReader,
     PricesStreamService priceStraem,
     TickersStreamService tickerStream,
     OrderbookStreamService orderbookStream,
     BalancesStreamService balanceStream,
     IMapper mapper
     )
 {
     _noSqlTcpClient  = noSqlTcpClient;
     _pricesReader    = pricesReader;
     _tickerReader    = tickerReader;
     _orderbookReader = orderbookReader;
     _balanceReader   = balanceReader;
     _priceStraem     = priceStraem;
     _tickerStream    = tickerStream;
     _orderbookStream = orderbookStream;
     _balanceStream   = balanceStream;
     _mapper          = mapper;
 }
Ejemplo n.º 20
0
        static async Task Main(string[] args)
        {
            Console.Write("Press enter to start");
            Console.ReadLine();

            await GenerateAsstToBitgoMap();


            MyNoSqlTcpClient myNoSqlClient = new MyNoSqlTcpClient(() => "192.168.10.80:5125", "test-bitgo-settings-app");

            var mapper = new AssetMapper(
                new MyNoSqlReadRepository <BitgoAssetMapEntity>(myNoSqlClient, BitgoAssetMapEntity.TableName),
                new MyNoSqlReadRepository <BitgoCoinEntity>(myNoSqlClient, BitgoCoinEntity.TableName));

            myNoSqlClient.Start();

            await Task.Delay(5000);

            var(coin, wallet) = mapper.AssetToBitgoCoinAndWallet("jetwallet", "BTC");
            Console.WriteLine($"BTC (coin|wallet): {coin}|{wallet}");

            Console.WriteLine("End");
            Console.ReadLine();
        }
Ejemplo n.º 21
0
 public ApplicationManager(
     MyNoSqlTcpClient noSqlTcpClient,
     IMyNoSqlServerDataReader <PriceEntity> pricesReader,
     IMyNoSqlServerDataReader <CandleEntity> candlesReader,
     IMyNoSqlServerDataReader <TickerEntity> tickersReader,
     IMyNoSqlServerDataReader <OrderbookEntity> orderbooksReader,
     IMyNoSqlServerDataReader <SessionEntity> sessionsReader,
     PricesStreamService priceStream,
     CandlesStreamService candlesStream,
     OrderbookStreamService orderbookStream,
     IMapper mapper
     )
 {
     _noSqlTcpClient   = noSqlTcpClient;
     _pricesReader     = pricesReader;
     _candlesReader    = candlesReader;
     _tickersReader    = tickersReader;
     _orderbooksReader = orderbooksReader;
     _sessionsReader   = sessionsReader;
     _priceStream      = priceStream;
     _candlesStream    = candlesStream;
     _orderbookStream  = orderbookStream;
     _mapper           = mapper;
 }
Ejemplo n.º 22
0
        static async Task Main(string[] args)
        {
            var writer = new MyNoSqlServer.DataWriter.MyNoSqlServerDataWriter <Entity>(() => "http://localhost:5123", "entity");

            await writer.CleanAndKeepMaxPartitions(0);

            int i = 1;
            var t = Task.Run(async() =>
            {
                while (true)
                {
                    await writer.InsertOrReplaceAsync(new Entity(i, $"{i}{i}{i}"));
                    Console.WriteLine($"-->{i}");
                    await Task.Delay(5000);
                    i++;
                }
            });

            await Task.Delay(10000);

            var client = new MyNoSqlTcpClient(() => "localhost:5125", "TestApp-client");

            client.Start();

            var reader = new MyNoSqlServer.DataReader.MyNoSqlReadRepository <Entity>(client, "entity");


            await Task.Delay(3000);

            var r = reader.Count("Entity-1");

            Console.WriteLine($"count: {r}");

            reader.SubscribeToChanges(list =>
            {
                foreach (var entity in list)
                {
                    Console.WriteLine($"<-- {entity.Id}");
                }
            });

            Console.ReadLine();

            var e = reader.Get("Entity-1", "1");

            Console.WriteLine($"{e.Id} :: {e.Name}");

            r = reader.Count("Entity-1");
            Console.WriteLine($"count: {r}");
            r = reader.Count();
            Console.WriteLine($"count: {r}");

            Console.ReadLine();

            /*
             * output:
             * -->1
             * -->2
             * -->3
             * count: 0
             * -->4
             * -->5
             *
             * count: 0
             * -->6
             */
        }
Ejemplo n.º 23
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.Register(ctx =>
                {
                    var factory = ctx.Resolve<IHttpClientFactory>();
                    return new LykkeWalletAPIv1Client(factory.CreateClient(HttpClientNames.WalletApiV1));
                })
                .As<ILykkeWalletAPIv1Client>();

            builder.Register(ctx =>
                {
                    var factory = ctx.Resolve<IHttpClientFactory>();
                    return new LykkeWalletAPIv2Client(factory.CreateClient(HttpClientNames.WalletApiV2));
                })
                .As<ILykkeWalletAPIv2Client>();

            builder.RegisterClientSessionClient(
                new SessionServiceClientSettings {ServiceUrl = _config.Services.SessionServiceUrl});

            builder.RegisterType<GrpcPrincipal>().As<IGrpcPrincipal>().InstancePerLifetimeScope();

            builder.Register(ctx =>
                {
                    var logger = ctx.Resolve<ILoggerFactory>();
                    _logFactory = logger.ToLykke();
                    return _logFactory;
                })
                .As<ILogFactory>();

            builder.Register(ctx =>
                {
                    var client = new MyNoSqlTcpClient(() => _config.MyNoSqlServer.ReaderServiceUrl,
                        $"{ApplicationInformation.AppName}-{Environment.MachineName}");

                    client.Start();
                    return client;
                })
                .AsSelf()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<PriceEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.PricesTableName)
                )
                .As<IMyNoSqlServerDataReader<PriceEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<CandleEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.CandlesTableName)
                )
                .As<IMyNoSqlServerDataReader<CandleEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                    new MyNoSqlReadRepository<TickerEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                        _config.MyNoSqlServer.TickersTableName)
                )
                .As<IMyNoSqlServerDataReader<TickerEntity>>()
                .SingleInstance();

            builder.Register(ctx =>
                new MyNoSqlReadRepository<OrderbookEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                    _config.MyNoSqlServer.OrderbooksTableName)
            ).As<IMyNoSqlServerDataReader<OrderbookEntity>>().SingleInstance();

            builder.Register(ctx =>
                new MyNoSqlReadRepository<SessionEntity>(ctx.Resolve<MyNoSqlTcpClient>(),
                    _config.MyNoSqlServer.SessionsTableName)
            ).As<IMyNoSqlServerDataReader<SessionEntity>>().SingleInstance();

            builder.Register(ctx =>
            {
                return new MyNoSqlServer.DataWriter.MyNoSqlServerDataWriter<SessionEntity>(() =>
                        _config.MyNoSqlServer.WriterServiceUrl,
                    _config.MyNoSqlServer.SessionsTableName);
            }).As<IMyNoSqlServerDataWriter<SessionEntity>>().SingleInstance();

            builder.RegisterType<PricesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .WithParameter("jobPeriod", TimeSpan.FromSeconds(1))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<CandlesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<OrderbookStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<PublicTradesStreamService>()
                .WithParameter(TypedParameter.From(true))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<ApplicationManager>()
                .As<IStartable>()
                .AutoActivate()
                .SingleInstance();

            builder.RegisterInstance(
                    new Candleshistoryservice(new Uri(_config.Services.CandlesHistoryServiceUrl), new HttpClient())
                )
                .As<ICandleshistoryservice>();

            builder.RegisterAssetsClient(AssetServiceSettings.Create(new Uri(_config.Services.AssetsServiceUrl),
                TimeSpan.FromMinutes(60)));

            builder.RegisterBalancesClient(_config.Services.BalancesServiceUrl);
            builder.RegisterMeClient(_config.MatchingEngine.GetIpEndPoint());
            builder.RegisterClientAccountClient(_config.Services.ClientAccountServiceUrl);

            builder.RegisterType<AssetsHelper>().AsSelf().SingleInstance();
            builder.RegisterType<ValidationService>().AsSelf().SingleInstance();
            builder.RegisterInstance(_config.WalletApi);
            builder.RegisterRateCalculatorClient(_config.Services.RateCalculatorServiceUrl);
            var cache = new RedisCache(new RedisCacheOptions
            {
                Configuration = _config.Redis.RedisConfiguration,
                InstanceName = _config.Redis.InstanceName
            });

            builder.RegisterInstance(cache)
                .As<IDistributedCache>()
                .SingleInstance();

            builder.RegisterType<OrderbooksService>()
                .WithParameter(TypedParameter.From(_config.Redis.OrderBooksCacheKeyPattern))
                .AsSelf()
                .SingleInstance();

            builder.Register(ctx =>
                    new TradesAdapterClient(_config.Services.TradesAdapterServiceUrl,
                        ctx.Resolve<ILogFactory>().CreateLog(nameof(TradesAdapterClient)))
                )
                .As<ITradesAdapterClient>()
                .SingleInstance();

            builder.RegisterRegistrationServiceClient(new RegistrationServiceClientSettings{ServiceUrl = _config.Services.RegistrationServiceUrl});

            builder.RegisterType<SessionService>()
                .WithParameter(TypedParameter.From(_config.SessionLifetimeInMins))
                .AsSelf()
                .SingleInstance();

            builder.RegisterType<PublicTradesSubscriber>()
                .As<IStartable>()
                .AutoActivate()
                .WithParameter("connectionString", _config.RabbitMq.PublicTrades.ConnectionString)
                .WithParameter("exchangeName", _config.RabbitMq.PublicTrades.ExchangeName)
                .SingleInstance();

            builder.RegisterPushNotificationsClient(_config.Services.PushNotificationsServiceUrl);
        }
 public ClientsModule(MyNoSqlTcpClient myNoSqlClient)
 {
     _myNoSqlClient = myNoSqlClient;
 }
Ejemplo n.º 25
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <AssetsService>()
            .WithParameter(TypedParameter.From(_config.Cache.AssetsCacheDuration))
            .As <IAssetsService>()
            .As <IStartable>()
            .AutoActivate();

            builder.RegisterType <OrderbooksService>()
            .As <IOrderbooksService>()
            .WithParameter(TypedParameter.From(_config.Redis.OrderBooksCacheKeyPattern))
            .SingleInstance();

            var cache = new RedisCache(new RedisCacheOptions
            {
                Configuration = _config.Redis.RedisConfiguration,
                InstanceName  = _config.Redis.InstanceName
            });

            builder.RegisterInstance(cache)
            .As <IDistributedCache>()
            .SingleInstance();

            builder.RegisterMarketDataClient(new MarketDataServiceClientSettings {
                GrpcServiceUrl = _config.Services.MarketDataGrpcServiceUrl
            });

            builder.Register(ctx =>
            {
                var logger = ctx.Resolve <ILoggerFactory>();
                return(logger.ToLykke());
            }).As <ILogFactory>();

            builder.RegisterMeClient(_config.MatchingEngine.GetIpEndPoint());

            builder.RegisterType <KeyUpdateSubscriber>()
            .As <IStartable>()
            .AutoActivate()
            .WithParameter("connectionString", _config.RabbitMq.HftInternal.ConnectionString)
            .WithParameter("exchangeName", _config.RabbitMq.HftInternal.ExchangeName)
            .SingleInstance();

            builder.RegisterHftInternalClient(_config.Services.HftInternalServiceUrl);

            builder.RegisterType <TokenService>()
            .As <ITokenService>()
            .SingleInstance();

            builder.RegisterType <BalanceService>()
            .As <IBalanceService>()
            .SingleInstance();

            builder.RegisterType <ValidationService>()
            .AsSelf()
            .SingleInstance();

            builder.Register(ctx =>
            {
                var client = new MyNoSqlTcpClient(() => _config.MyNoSqlServer.ReaderServiceUrl, $"{ApplicationInformation.AppName}-{Environment.MachineName}");
                client.Start();
                return(client);
            }).AsSelf().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <TickerEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.TickersTableName)
                             ).As <IMyNoSqlServerDataReader <TickerEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <PriceEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.PricesTableName)
                             ).As <IMyNoSqlServerDataReader <PriceEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <OrderbookEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.OrderbooksTableName)
                             ).As <IMyNoSqlServerDataReader <OrderbookEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <BalanceEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.BalancesTableName)
                             ).As <IMyNoSqlServerDataReader <BalanceEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <OrderEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.OrdersTableName)
                             ).As <IMyNoSqlServerDataReader <OrderEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <TradeEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.TradesTableName)
                             ).As <IMyNoSqlServerDataReader <TradeEntity> >().SingleInstance();

            builder.RegisterType <StreamService <PriceUpdate> >().As <IStreamService <PriceUpdate> >().SingleInstance();
            builder.RegisterType <StreamService <TickerUpdate> >().As <IStreamService <TickerUpdate> >().SingleInstance();
            builder.RegisterType <StreamService <Orderbook> >().As <IStreamService <Orderbook> >().SingleInstance();
            builder.RegisterType <StreamService <BalanceUpdate> >()
            .WithParameter(TypedParameter.From(true))
            .As <IStreamService <BalanceUpdate> >()
            .SingleInstance();
            builder.RegisterType <StreamService <OrderUpdate> >()
            .WithParameter(TypedParameter.From(true))
            .As <IStreamService <OrderUpdate> >()
            .SingleInstance();
            builder.RegisterType <StreamService <TradeUpdate> >()
            .WithParameter(TypedParameter.From(true))
            .As <IStreamService <TradeUpdate> >()
            .SingleInstance();
            builder.RegisterType <ApplicationManager>().AsSelf().SingleInstance();
        }
Ejemplo n.º 26
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <AssetsService>()
            .WithParameter(TypedParameter.From(_config.Cache.AssetsCacheDuration))
            .As <IAssetsService>()
            .As <IStartable>()
            .AutoActivate();

            builder.RegisterType <OrderbooksService>()
            .As <IOrderbooksService>()
            .WithParameter(TypedParameter.From(_config.Redis.OrderBooksCacheKeyPattern))
            .SingleInstance();

            var cache = new RedisCache(new RedisCacheOptions
            {
                Configuration = _config.Redis.RedisConfiguration,
                InstanceName  = _config.Redis.InstanceName
            });

            builder.RegisterInstance(cache)
            .As <IDistributedCache>()
            .SingleInstance();

            builder.RegisterMarketDataClient(new MarketDataServiceClientSettings {
                GrpcServiceUrl = _config.Services.MarketDataGrpcServiceUrl
            });

            builder.Register(ctx =>
            {
                var logger = ctx.Resolve <ILoggerFactory>();
                return(logger.ToLykke());
            }).As <ILogFactory>();

            builder.RegisterMeClient(_config.MatchingEngine.GetIpEndPoint());

            builder.RegisterType <KeyUpdateSubscriber>()
            .As <IStartable>()
            .AutoActivate()
            .WithParameter("connectionString", _config.RabbitMq.HftInternal.ConnectionString)
            .WithParameter("exchangeName", _config.RabbitMq.HftInternal.ExchangeName)
            .SingleInstance();

            builder.RegisterHftInternalClient(_config.Services.HftInternalServiceUrl);

            builder.RegisterType <TokenService>()
            .As <ITokenService>()
            .SingleInstance();

            builder.RegisterType <BalanceService>()
            .As <IBalanceService>()
            .SingleInstance();

            builder.RegisterType <ValidationService>()
            .AsSelf()
            .SingleInstance();

            builder.RegisterType <IdempotencyService>()
            .AsSelf()
            .SingleInstance();

            var reconnectTimeoutInSec = Environment.GetEnvironmentVariable("NOSQL_PING_INTERVAL") ?? "15";

            builder.Register(ctx =>
            {
                var client = new MyNoSqlTcpClient(() => _config.MyNoSqlServer.ReaderServiceUrl, $"{ApplicationInformation.AppName}-{Environment.MachineName}", int.Parse(reconnectTimeoutInSec));
                client.Start();
                return(client);
            }).AsSelf().SingleInstance();

            builder.RegisterInstance(_config.FeeSettings)
            .AsSelf();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <TickerEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.TickersTableName)
                             ).As <IMyNoSqlServerDataReader <TickerEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <PriceEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.PricesTableName)
                             ).As <IMyNoSqlServerDataReader <PriceEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <OrderbookEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.OrderbooksTableName)
                             ).As <IMyNoSqlServerDataReader <OrderbookEntity> >().SingleInstance();

            builder.Register(ctx =>
                             new MyNoSqlReadRepository <BalanceEntity>(ctx.Resolve <MyNoSqlTcpClient>(), _config.MyNoSqlServer.BalancesTableName)
                             ).As <IMyNoSqlServerDataReader <BalanceEntity> >().SingleInstance();

            builder.RegisterType <PricesStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <TickersStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <OrderbookStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <BalancesStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <OrdersStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <TradesStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <PublicTradesStreamService>()
            .WithParameter(TypedParameter.From(true))
            .AsSelf()
            .SingleInstance();
            builder.RegisterType <StreamsManager>().AsSelf().SingleInstance();
            builder.RegisterType <SiriusWalletsService>()
            .As <ISiriusWalletsService>()
            .WithParameter(TypedParameter.From(_config.Services.SiriusApiServiceClient.BrokerAccountId))
            .WithParameter(TypedParameter.From(_config.Services.SiriusApiServiceClient.WalletsActiveRetryCount))
            .WithParameter(TypedParameter.From(_config.Services.SiriusApiServiceClient.WaitForActiveWalletsTimeout))
            .SingleInstance();

            builder.RegisterType <TradesSubscriber>()
            .As <IStartable>()
            .AutoActivate()
            .WithParameter("connectionString", _config.RabbitMq.Orders.ConnectionString)
            .WithParameter("exchangeName", _config.RabbitMq.Orders.ExchangeName)
            .SingleInstance();

            builder.Register(ctx =>
                             new TradesAdapterClient(_config.Services.TradesAdapterServiceUrl,
                                                     ctx.Resolve <ILogFactory>().CreateLog(nameof(TradesAdapterClient)))
                             )
            .As <ITradesAdapterClient>()
            .SingleInstance();

#pragma warning disable 618
            builder.Register(x => new KycStatusServiceClient(_config.Services.KycServiceClient, x.Resolve <ILogFactory>()))
#pragma warning restore 618
            .As <IKycStatusService>()
            .SingleInstance();

            builder.RegisterClientAccountClient(_config.Services.ClientAccountServiceUrl);

            builder.RegisterOperationsClient(_config.Services.OperationsServiceUrl);

            builder.RegisterClientDialogsClient(_config.Services.ClientDialogsServiceUrl);

            builder.RegisterInstance(
                new Swisschain.Sirius.Api.ApiClient.ApiClient(_config.Services.SiriusApiServiceClient.GrpcServiceUrl, _config.Services.SiriusApiServiceClient.ApiKey)
                ).As <Swisschain.Sirius.Api.ApiClient.IApiClient>();

            builder.RegisterType <PublicTradesSubscriber>()
            .As <IStartable>()
            .AutoActivate()
            .WithParameter("connectionString", _config.RabbitMq.PublicTrades.ConnectionString)
            .WithParameter("exchangeName", _config.RabbitMq.PublicTrades.ExchangeName)
            .SingleInstance();


            builder.Register(ctx =>
                             AzureTableStorage <IdempotentEntity> .Create(ConstantReloadingManager.From(_config.Db.DataConnString),
                                                                          "HftApiIdempotency", ctx.Resolve <ILogFactory>())
                             ).As <INoSQLTableStorage <IdempotentEntity> >().SingleInstance();
        }