public void Unsubscribe(ChunkHandlerSubscription subscription) { //we do not need an accurate value _lastUpdatedTicksUTC = DateTime.UtcNow.Ticks; if (_subscriptions.TryRemove(subscription, out var ignore)) { Interlocked.Decrement(ref _subscriptionCounter); } }
public ChunkHandlerSubscription CreateSubscription(Func <ChunkKey, ChunkUpdate, Task> onUpdate) { //we do not need an accurate value _lastUpdatedTicksUTC = DateTime.UtcNow.Ticks; var subscription = new ChunkHandlerSubscription(this); if (_subscriptions.TryAdd(subscription, onUpdate)) { return(subscription); } else { throw new InvalidOperationException("Error during add subscription handler to chunk."); } }