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