public void AddResource(SubscriptionResource subscriber) { subscriber.PreNotifySubscriber(this.published, excludeAggregated); subscriber.PreNotifySubscriber(this.aggregatedStates, null); subscriber.NotifySubscriber(); subscribers.Add(subscriber); }
public void RemoveResource(SubscriptionResource subscriber) { //if (Categories.Items.Count > 0) // PublicationUpdatedEvent(resource); // зачем нотифить сабскрайбера когда он отписывается? // тем более список ресурсов фактически не изменился // он просто от них отписался, чем нотифить? subscribers.Remove(subscriber); }
public void AddResource(SubscriptionResource resource) { int tickCount = Environment.TickCount; for (int i = 0; i < resources.Count; i++) { if (resources[i].GetExpires(tickCount) > resource.GetExpires(tickCount)) { resources.Insert(i, resource); break; } } }
private void SubscriptionResource_NotifySubscriber(SubscriptionResource resource, Categories categories) { notifyEvent.BeginInvoke(resource.Expires , (resource.Expires > 0) ? @"active" : @"terminated" , new OutContent(categories, this.sync) , resource.Subscription.Param , new AsyncCallback(SubscriptionResource_NotifySubscriber_EndInvoke) , notifyEvent); }
public void UpdateResource(SubscriptionResource resource) { RemoveResource(resource); AddResource(resource); }
public void RemoveResource(SubscriptionResource resource) { resources.Remove(resource); }
public void UpdateResource(SubscriptionResource subscriber) { throw new NotSupportedException(); }
public void Process(BatchSubscribe batchSubs, ExpiresList expireList, uint expires, out Rlmi rlmi, out List<Categories> categories) { rlmi = null; categories = null; if (batchSubs == null && expires == 0) { List<SubscriptionResource> resources = new List<SubscriptionResource>(Resources.Values); foreach (SubscriptionResource resource in resources) resource.Destroy(); } else if (batchSubs.Action == BatchSubscribeAction.Unsubscribe || expires == 0) { rlmi = Rlmi.Create(this.Uri); foreach (string uri in batchSubs.Resources) { SubscriptionResource resource; if (Resources.TryGetValue(uri, out resource)) { resource.Destroy(); } } } else if (batchSubs.Action == BatchSubscribeAction.Subscribe && expires > 0) { rlmi = Rlmi.Create(this.Uri); categories = new List<Categories>(); foreach (string uri in batchSubs.Resources) { SubscriptionResource resource; if (Resources.TryGetValue(uri, out resource)) { resource.SubsCategories = batchSubs.Сategories; resource.Expires = expires; } else { Publication publication = null; if (ResolvePublicationEvent != null) publication = ResolvePublicationEvent(uri); if (publication != null) { resource = new SubscriptionResource(this, publication, batchSubs.Сategories, expireList, expires); } else { rlmi.AddResubscribe(uri); } } if (resource != null) { categories.Add( resource.EndSubscribeProccessing() ); } } } }
public void AddResource(SubscriptionResource resource) { Resources.Add(resource.Uri, resource); }