Пример #1
0
		public void AddResource(SubscriptionResource subscriber)
		{
			subscriber.PreNotifySubscriber(this.published, excludeAggregated);
			subscriber.PreNotifySubscriber(this.aggregatedStates, null);
			subscriber.NotifySubscriber();

			subscribers.Add(subscriber);
		}
Пример #2
0
		public void RemoveResource(SubscriptionResource subscriber)
		{
			//if (Categories.Items.Count > 0)
			//	PublicationUpdatedEvent(resource);
			// зачем нотифить сабскрайбера когда он отписывается?
			// тем более список ресурсов фактически не изменился
			// он просто от них отписался, чем нотифить?
			subscribers.Remove(subscriber);
		}
Пример #3
0
        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;
                }
            }
        }
Пример #4
0
		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);
		}
Пример #5
0
 public void UpdateResource(SubscriptionResource resource)
 {
     RemoveResource(resource);
     AddResource(resource);
 }
Пример #6
0
 public void RemoveResource(SubscriptionResource resource)
 {
     resources.Remove(resource);
 }
Пример #7
0
		public void UpdateResource(SubscriptionResource subscriber)
		{
			throw new NotSupportedException();
		}
Пример #8
0
		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()
						);
					}
				}
			}
        }
Пример #9
0
 public void AddResource(SubscriptionResource resource)
 {
     Resources.Add(resource.Uri, resource);
 }