Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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.");
            }
        }