mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2026-02-16 22:23:54 +00:00
wip
This commit is contained in:
parent
12ca6ffd05
commit
2af66e5f0a
@ -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,17 +113,20 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
listenKey = lkResult.Data;
|
listenKey = lkResult.Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
var subBalanceResult = await ExchangeHelpers.ProcessQueuedAsync<SharedBalance[]>(
|
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),
|
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);
|
||||||
if (!subBalanceResult)
|
if (!subBalanceResult)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Failed to start UserFuturesDataTracker; failed to subscribe to balance stream: {Error}", subBalanceResult.Error!.Message);
|
_logger.LogWarning("Failed to start UserFuturesDataTracker; failed to subscribe to balance stream: {Error}", subBalanceResult.Error!.Message);
|
||||||
return subBalanceResult;
|
return subBalanceResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
_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);
|
||||||
|
|||||||
@ -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,17 +98,20 @@ namespace CryptoExchange.Net.Trackers.UserData
|
|||||||
listenKey = lkResult.Data;
|
listenKey = lkResult.Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
var subBalanceResult = await ExchangeHelpers.ProcessQueuedAsync<SharedBalance[]>(
|
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),
|
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);
|
||||||
if (!subBalanceResult)
|
if (!subBalanceResult)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Failed to start UserDataTracker; failed to subscribe to balance stream: {Error}", subBalanceResult.Error!.Message);
|
_logger.LogWarning("Failed to start UserDataTracker; failed to subscribe to balance stream: {Error}", subBalanceResult.Error!.Message);
|
||||||
return subBalanceResult;
|
return subBalanceResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
_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);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user