1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2026-02-16 14:13:46 +00:00
This commit is contained in:
Jkorf 2026-02-03 10:28:47 +01:00
parent 12ca6ffd05
commit 2af66e5f0a
2 changed files with 28 additions and 22 deletions

View File

@ -27,7 +27,7 @@ namespace CryptoExchange.Net.Trackers.UserData
private readonly IListenKeyRestClient? _listenKeyRestClient;
private readonly IFuturesSymbolRestClient _futuresSymbolRestClient;
private readonly IBalanceRestClient _balanceRestClient;
private readonly IBalanceSocketClient _balanceSocketClient;
private readonly IBalanceSocketClient? _balanceSocketClient;
private readonly IFuturesOrderRestClient _futuresOrderRestClient;
private readonly IFuturesOrderSocketClient _futuresOrderSocketClient;
private readonly IPositionSocketClient _positionSocketClient;
@ -79,10 +79,10 @@ namespace CryptoExchange.Net.Trackers.UserData
_exchangeParameters = exchangeParameters;
_futuresSymbolRestClient = (IFuturesSymbolRestClient)restClient;
_balanceRestClient = (IBalanceRestClient)restClient;
_balanceSocketClient = (IBalanceSocketClient)socketClient;
_futuresOrderRestClient = (IFuturesOrderRestClient)restClient;
_futuresOrderSocketClient = (IFuturesOrderSocketClient)socketClient;
_positionSocketClient = (IPositionSocketClient)socketClient;
_balanceSocketClient = socketClient as IBalanceSocketClient;
_listenKeyRestClient = restClient as IListenKeyRestClient;
_userTradeSocketClient = socketClient as IUserTradeSocketClient;
}
@ -113,6 +113,8 @@ namespace CryptoExchange.Net.Trackers.UserData
listenKey = lkResult.Data;
}
if (_balanceSocketClient != null)
{
var subBalanceResult = await ExchangeHelpers.ProcessQueuedAsync<SharedBalance[]>(
async handler => await _balanceSocketClient.SubscribeToBalanceUpdatesAsync(new SubscribeBalancesRequest(listenKey, exchangeParameters: _exchangeParameters), handler, ct: _cts!.Token).ConfigureAwait(false),
x => HandleBalanceUpdateAsync(UpdateSource.Push, x.Data)).ConfigureAwait(false);
@ -124,6 +126,7 @@ namespace CryptoExchange.Net.Trackers.UserData
_balanceSubscription = subBalanceResult.Data;
subBalanceResult.Data.SubscriptionStatusChanged += BalanceSubscriptionStatusChanged;
}
var subOrderResult = await ExchangeHelpers.ProcessQueuedAsync<SharedFuturesOrder[]>(
async handler => await _futuresOrderSocketClient.SubscribeToFuturesOrderUpdatesAsync(new SubscribeFuturesOrderRequest(listenKey, exchangeParameters: _exchangeParameters), handler, ct: _cts!.Token).ConfigureAwait(false),
@ -352,7 +355,7 @@ namespace CryptoExchange.Net.Trackers.UserData
private void CheckConnectedChanged()
{
Connected = _balanceSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed
Connected = (_balanceSubscription == null || _balanceSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed)
&& _orderSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed
&& (_tradeSubscription == null || _tradeSubscription.SubscriptionStatus == SubscriptionStatus.Subscribed)
&& (_positionSubscription == null || _positionSubscription.SubscriptionStatus == SubscriptionStatus.Subscribed);

View File

@ -24,7 +24,7 @@ namespace CryptoExchange.Net.Trackers.UserData
private readonly IListenKeyRestClient? _listenKeyRestClient;
private readonly ISpotSymbolRestClient _spotSymbolRestClient;
private readonly IBalanceRestClient _balanceRestClient;
private readonly IBalanceSocketClient _balanceSocketClient;
private readonly IBalanceSocketClient? _balanceSocketClient;
private readonly ISpotOrderRestClient _spotOrderRestClient;
private readonly ISpotOrderSocketClient _spotOrderSocketClient;
private readonly IUserTradeSocketClient? _userTradeSocketClient;
@ -66,9 +66,9 @@ namespace CryptoExchange.Net.Trackers.UserData
_spotSymbolRestClient = (ISpotSymbolRestClient)restClient;
_balanceRestClient = (IBalanceRestClient)restClient;
_balanceSocketClient = (IBalanceSocketClient)socketClient;
_spotOrderRestClient = (ISpotOrderRestClient)restClient;
_spotOrderSocketClient = (ISpotOrderSocketClient)socketClient;
_balanceSocketClient = socketClient as IBalanceSocketClient;
_listenKeyRestClient = restClient as IListenKeyRestClient;
_userTradeSocketClient = socketClient as IUserTradeSocketClient;
}
@ -98,6 +98,8 @@ namespace CryptoExchange.Net.Trackers.UserData
listenKey = lkResult.Data;
}
if (_balanceSocketClient != null)
{
var subBalanceResult = await ExchangeHelpers.ProcessQueuedAsync<SharedBalance[]>(
async handler => await _balanceSocketClient.SubscribeToBalanceUpdatesAsync(new SubscribeBalancesRequest(listenKey, exchangeParameters: _exchangeParameters), handler, ct: _cts!.Token).ConfigureAwait(false),
x => HandleBalanceUpdateAsync(UpdateSource.Push, x.Data)).ConfigureAwait(false);
@ -109,6 +111,7 @@ namespace CryptoExchange.Net.Trackers.UserData
_balanceSubscription = subBalanceResult.Data;
subBalanceResult.Data.SubscriptionStatusChanged += BalanceSubscriptionStatusChanged;
}
var subOrderResult = await ExchangeHelpers.ProcessQueuedAsync<SharedSpotOrder[]>(
async handler => await _spotOrderSocketClient.SubscribeToSpotOrderUpdatesAsync(new SubscribeSpotOrderRequest(listenKey, exchangeParameters: _exchangeParameters), handler, ct: _cts!.Token).ConfigureAwait(false),
@ -266,7 +269,7 @@ namespace CryptoExchange.Net.Trackers.UserData
private void CheckConnectedChanged()
{
Connected = _balanceSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed
Connected = (_balanceSubscription == null || _balanceSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed)
&& _orderSubscription?.SubscriptionStatus == SubscriptionStatus.Subscribed
&& (_tradeSubscription == null || _tradeSubscription.SubscriptionStatus == SubscriptionStatus.Subscribed);
}