private void UnmarkSimpleTokenForPropagation(SubscriptionToken token) { _cachier.UnmarkSubscriptionForResource(token.ResourceType); token.PropagationSubscriptionCounter--; if (token.PropagationSubscriptionCounter == 0) { _totalSubscriptions.Remove(token.ResourceName); if (token.SubscriptionCounter == 0 && token.PropagationSubscriptionCounter == 0) { _cachier.UnmarkSubscriptionForResource(token.ResourceType); _issuedTokens.Remove(token.ResourceName); } } }
/// <summary> /// Отписывается от обновления ресурса. /// </summary> /// <param name="token">Маркер обновления.</param> public void UnsubscribeForResourceChange(SubscriptionToken token) { lock (_issuedTokens) { if (token is CombinedSubscriptionToken) { var stoken = (token as CombinedSubscriptionToken); foreach (SubscriptionToken subscriptionToken in stoken.Tokens.Where(k => k.SubscriptionCounter > 0)) { UnmarkSimpleToken(subscriptionToken); } stoken.ClearTokens(); } else { UnmarkSimpleToken(token); } } }
internal void AddToken(SubscriptionToken token) { _tokens.Add(token); token.ResourceMarkedAsUnactual += TokenOnResourceMarkedAsUnactual; }
/// <summary> /// Merges the with subscription for resource change. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="token">The token.</param> /// <returns></returns> internal SubscriptionToken MergeWithSubscriptionForResourceChange <T>(SubscriptionToken token) { return(SubscribeForResourceChangeCommon(typeof(T), token, false)); }