mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2026-02-16 14:13:46 +00:00
Compare commits
2 Commits
5942423bfb
...
90c1b89ceb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90c1b89ceb | ||
|
|
21206ffb25 |
@ -643,19 +643,20 @@ namespace CryptoExchange.Net.OrderBook
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Wait until an update has been buffered
|
/// Wait until an update has been buffered
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="timeout">Max wait time</param>
|
/// <param name="minWait">Min wait time</param>
|
||||||
|
/// <param name="maxWait">Max wait time</param>
|
||||||
/// <param name="ct">Cancellation token</param>
|
/// <param name="ct">Cancellation token</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
protected async Task<CallResult<bool>> WaitUntilFirstUpdateBufferedAsync(TimeSpan timeout, CancellationToken ct)
|
protected async Task<CallResult> WaitUntilFirstUpdateBufferedAsync(TimeSpan? minWait, TimeSpan maxWait, CancellationToken ct)
|
||||||
{
|
{
|
||||||
var startWait = DateTime.UtcNow;
|
var startWait = DateTime.UtcNow;
|
||||||
while (_processBuffer.Count == 0)
|
while (_processBuffer.Count == 0)
|
||||||
{
|
{
|
||||||
if (ct.IsCancellationRequested)
|
if (ct.IsCancellationRequested)
|
||||||
return new CallResult<bool>(new CancellationRequestedError());
|
return new CallResult(new CancellationRequestedError());
|
||||||
|
|
||||||
if (DateTime.UtcNow - startWait > timeout)
|
if (DateTime.UtcNow - startWait > maxWait)
|
||||||
return new CallResult<bool>(new ServerError(new ErrorInfo(ErrorType.OrderBookTimeout, "Timeout while waiting for data")));
|
return new CallResult(new ServerError(new ErrorInfo(ErrorType.OrderBookTimeout, "Timeout while waiting for data")));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -665,7 +666,14 @@ namespace CryptoExchange.Net.OrderBook
|
|||||||
{ }
|
{ }
|
||||||
}
|
}
|
||||||
|
|
||||||
return new CallResult<bool>(true);
|
if (minWait != null)
|
||||||
|
{
|
||||||
|
var dif = DateTime.UtcNow - startWait;
|
||||||
|
if (dif < minWait)
|
||||||
|
await Task.Delay(minWait.Value - dif).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CallResult.SuccessResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -139,6 +141,26 @@ namespace CryptoExchange.Net
|
|||||||
/// <param name="api">API name</param>
|
/// <param name="api">API name</param>
|
||||||
public static TimeSpan? GetSocketOffset(string api) => _lastSocketDelays.TryGetValue(api, out var val) && val.Offset != null ? TimeSpan.FromMilliseconds(val.Offset.Value) : null;
|
public static TimeSpan? GetSocketOffset(string api) => _lastSocketDelays.TryGetValue(api, out var val) && val.Offset != null ? TimeSpan.FromMilliseconds(val.Offset.Value) : null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get a dictionary of API/Client name -> time offset for Rest api's
|
||||||
|
/// </summary>
|
||||||
|
public static Dictionary<string, TimeSpan?> GetRestOffsets()
|
||||||
|
{
|
||||||
|
return _lastRestDelays.ToDictionary(
|
||||||
|
x => x.Key,
|
||||||
|
x => (x.Value.Offset == null ? (TimeSpan?)null : TimeSpan.FromMilliseconds(x.Value.Offset.Value)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get a dictionary of API/Client name -> time offset for Websocket api's
|
||||||
|
/// </summary>
|
||||||
|
public static Dictionary<string, TimeSpan?> GetWebsocketOffsets()
|
||||||
|
{
|
||||||
|
return _lastSocketDelays.ToDictionary(
|
||||||
|
x => x.Key,
|
||||||
|
x => (x.Value.Offset == null ? (TimeSpan?)null : TimeSpan.FromMilliseconds(x.Value.Offset.Value)));
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reset the WebSocket API update timestamp to trigger a new time offset calculation
|
/// Reset the WebSocket API update timestamp to trigger a new time offset calculation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user