1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-09 17:06:19 +00:00

removed event triggering timeout

This commit is contained in:
msg_kurt 2019-09-04 17:23:30 +03:00
parent 43c17bae64
commit 6a3df9f7e7
3 changed files with 16 additions and 23 deletions

View File

@ -1553,6 +1553,16 @@
Event when the state changes Event when the state changes
</summary> </summary>
</member> </member>
<member name="E:CryptoExchange.Net.OrderBook.SymbolOrderBook.OnOrderBookUpdate">
<summary>
Event when orderbook was updated. Be careful! It can generate a lot of events at high-liquidity markets
</summary>
</member>
<member name="F:CryptoExchange.Net.OrderBook.SymbolOrderBook.LastOrderBookUpdate">
<summary>
Should be useful for low-liquidity order-books to monitor market activity
</summary>
</member>
<member name="P:CryptoExchange.Net.OrderBook.SymbolOrderBook.AskCount"> <member name="P:CryptoExchange.Net.OrderBook.SymbolOrderBook.AskCount">
<summary> <summary>
The number of asks in the book The number of asks in the book

View File

@ -28,10 +28,6 @@ namespace CryptoExchange.Net.Objects
/// </summary> /// </summary>
public class OrderBookOptions : BaseOptions public class OrderBookOptions : BaseOptions
{ {
/// <summary>
/// Update event raising timeout in milliseconds (to limit it at high-liquidity order books)
/// </summary>
public int UpdateEventTimeout { get; }
/// <summary> /// <summary>
/// The name of the order book implementation /// The name of the order book implementation
/// </summary> /// </summary>
@ -46,10 +42,8 @@ namespace CryptoExchange.Net.Objects
/// </summary> /// </summary>
/// <param name="name">The name of the order book implementation</param> /// <param name="name">The name of the order book implementation</param>
/// <param name="sequencesAreConsecutive">Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.</param> /// <param name="sequencesAreConsecutive">Whether each update should have a consecutive id number. Used to identify and reconnect when numbers are skipped.</param>
/// <param name="updateInterval">Update event raising timeout in milliseconds (to limit it at high-liquidity order books)</param> public OrderBookOptions(string name, bool sequencesAreConsecutive)
public OrderBookOptions(string name, bool sequencesAreConsecutive, int? updateInterval)
{ {
UpdateEventTimeout = updateInterval ?? 1000;
OrderBookName = name; OrderBookName = name;
SequenceNumbersAreConsecutive = sequencesAreConsecutive; SequenceNumbersAreConsecutive = sequencesAreConsecutive;
} }

View File

@ -72,16 +72,14 @@ namespace CryptoExchange.Net.OrderBook
/// </summary> /// </summary>
public event Action<OrderBookStatus, OrderBookStatus> OnStatusChange; public event Action<OrderBookStatus, OrderBookStatus> OnStatusChange;
/// <summary> /// <summary>
/// Event when orderbook was updated, but not more often then timeout setted in orderbook options (1000ms by default). Be careful! with small timeout it can generate a lot of events at high-liquidity order books /// Event when orderbook was updated. Be careful! It can generate a lot of events at high-liquidity markets
/// </summary> /// </summary>
public event Action OnOrderBookUpdate; public event Action OnOrderBookUpdate;
/// <summary> /// <summary>
/// Should be useful for low-liquidity order-books to monitor market activity /// Should be useful for low-liquidity order-books to monitor market activity
/// </summary> /// </summary>
public DateTime LastOrderBookUpdate; public DateTime LastOrderBookUpdate;
private DateTime LastOrderBookUpdateEventTrigger;
private readonly int updateEventInterval;
/// <summary> /// <summary>
/// The number of asks in the book /// The number of asks in the book
/// </summary> /// </summary>
@ -149,7 +147,6 @@ namespace CryptoExchange.Net.OrderBook
id = options.OrderBookName; id = options.OrderBookName;
processBuffer = new List<ProcessBufferEntry>(); processBuffer = new List<ProcessBufferEntry>();
sequencesAreConsecutive = options.SequenceNumbersAreConsecutive; sequencesAreConsecutive = options.SequenceNumbersAreConsecutive;
updateEventInterval = options.UpdateEventTimeout;
Symbol = symbol; Symbol = symbol;
Status = OrderBookStatus.Disconnected; Status = OrderBookStatus.Disconnected;
@ -272,11 +269,7 @@ namespace CryptoExchange.Net.OrderBook
CheckProcessBuffer(); CheckProcessBuffer();
bookSet = true; bookSet = true;
LastOrderBookUpdate = DateTime.UtcNow; LastOrderBookUpdate = DateTime.UtcNow;
if ((LastOrderBookUpdate - LastOrderBookUpdateEventTrigger).TotalMilliseconds >= updateEventInterval) OnOrderBookUpdate?.Invoke();
{
OnOrderBookUpdate?.Invoke();
LastOrderBookUpdateEventTrigger = DateTime.UtcNow;
}
log.Write(LogVerbosity.Debug, $"{id} order book {Symbol} data set: {BidCount} bids, {AskCount} asks"); log.Write(LogVerbosity.Debug, $"{id} order book {Symbol} data set: {BidCount} bids, {AskCount} asks");
} }
} }
@ -318,11 +311,7 @@ namespace CryptoExchange.Net.OrderBook
LastSequenceNumber = lastSequenceNumber; LastSequenceNumber = lastSequenceNumber;
CheckProcessBuffer(); CheckProcessBuffer();
LastOrderBookUpdate = DateTime.UtcNow; LastOrderBookUpdate = DateTime.UtcNow;
if ((LastOrderBookUpdate - LastOrderBookUpdateEventTrigger).TotalMilliseconds >= updateEventInterval) OnOrderBookUpdate?.Invoke();
{
OnOrderBookUpdate?.Invoke();
LastOrderBookUpdateEventTrigger = DateTime.UtcNow;
}
log.Write(LogVerbosity.Debug, $"{id} order book {Symbol} update: {entries.Count} entries processed"); log.Write(LogVerbosity.Debug, $"{id} order book {Symbol} update: {entries.Count} entries processed");
} }
} }