private MarketDataWebClient(string url, ProtoSchemes schemes) : base(url, schemes) { AddHandler(Schemes.Quotes.MessageId, OnQuotesHandler); AddHandler(Schemes.Entries.MessageId, OnEntriesHandler); AddHandler(Schemes.Snapshot.MessageId, OnSnapshotHandler); AddHandler(Schemes.OrderLog.MessageId, OnOrderLogHandler); }
protected BinaryWebSocketClient(string url, ProtoSchemes schemes) : base(url) { Schemes = schemes; AddHandler(Schemes.AuthNonce.MessageId, AuthNonceHandler); AddHandler(Schemes.AuthOk.MessageId, AuthOkHandler); AddHandler(Schemes.Error.MessageId, ErrorHandler); }
public async Task StartAsync() { Log.Information("Start terminal services"); var configuration = Configuration.GetSection($"Services:{Account.Network}"); // init schemes Schemes = new ProtoSchemes( currencies: Account.Currencies, symbols: Account.Symbols); // init market data repository MarketDataRepository = new MarketDataRepository(Account.Symbols); // init exchange client ExchangeClient = new ExchangeWebClient(configuration, Schemes); ExchangeClient.Connected += OnExchangeConnectedEventHandler; ExchangeClient.Disconnected += OnExchangeDisconnectedEventHandler; ExchangeClient.AuthOk += OnExchangeAuthOkEventHandler; ExchangeClient.AuthNonce += OnExchangeAuthNonceEventHandler; ExchangeClient.Error += OnExchangeErrorEventHandler; ExchangeClient.OrderReceived += OnExchangeOrderEventHandler; ExchangeClient.SwapReceived += OnSwapReceivedEventHandler; // init market data client MarketDataClient = new MarketDataWebClient(configuration, Schemes); MarketDataClient.Connected += OnMarketDataConnectedEventHandler; MarketDataClient.Disconnected += OnMarketDataDisconnectedEventHandler; MarketDataClient.AuthOk += OnMarketDataAuthOkEventHandler; MarketDataClient.AuthNonce += OnMarketDataAuthNonceEventHandler; MarketDataClient.Error += OnMarketDataErrorEventHandler; MarketDataClient.QuotesReceived += OnQuotesReceivedEventHandler; MarketDataClient.EntriesReceived += OnEntriesReceivedEventHandler; MarketDataClient.SnapshotReceived += OnSnapshotReceivedEventHandler; // init swap manager SwapManager = new ClientSwapManager( account: Account, swapClient: ExchangeClient, taskPerformer: TaskPerformer); SwapManager.SwapUpdated += (sender, args) => SwapUpdated?.Invoke(sender, args); // run services await Task.WhenAll( ExchangeClient.ConnectAsync(), MarketDataClient.ConnectAsync()) .ConfigureAwait(false); // run tracker TaskPerformer.EnqueueTask(new BalanceUpdateTask { Account = Account, Interval = TimeSpan.FromSeconds(Account.UserSettings.BalanceUpdateIntervalInSec) }); TaskPerformer.Start(); // start to track unconfirmed transactions await TrackUnconfirmedTransactionsAsync() .ConfigureAwait(false); // restore swaps SwapManager.RestoreSwapsAsync().FireAndForget(); }
public MarketDataWebClient(IConfiguration configuration, ProtoSchemes schemes) : this(configuration["MarketData:Url"], schemes) { }
private ExchangeWebClient(string url, ProtoSchemes schemes) : base(url, schemes) { AddHandler(Schemes.Order.MessageId, OnOrderHandler); AddHandler(Schemes.Swap.MessageId, OnSwapHandler); }
public ExchangeWebClient(IConfiguration configuration, ProtoSchemes schemes) : this(configuration[ExchangeUrlKey], schemes) { }