示例#1
0
        private static void TestSubscriptionExecution(string groupID)
        {
            string interestGroupLocation = "grp/" + groupID + "/";
            var    informationObjects    =
                StorageSupport.CurrActiveContainer.GetInformationObjects(interestGroupLocation, null,
                                                                         io => io is AddressAndLocation &&
                                                                         SubscribeSupport.GetSubscriptions(
                                                                             io.RelativeLocation) != null).ToArray
                    ();
            OperationRequest operationRequest       = new OperationRequest();
            SubscriptionChainRequestContent content = SubscriptionChainRequestContent.CreateDefault();
            SubscriptionChainRequestMessage message = SubscriptionChainRequestMessage.CreateDefault();

            message.ContentItemID = content.ID;
            content.SubmitTime    = DateTime.UtcNow;
            SubscriptionTarget[] targets = informationObjects.
                                           Select(io =>
            {
                SubscriptionTarget target = SubscriptionTarget.CreateDefault();
                target.BlobLocation       = io.RelativeLocation;
                return(target);
            }).ToArray();
            content.SubscriptionTargetCollection.CollectionContent.AddRange(targets);
            content.StoreInformation();
            WorkerSupport.ExecuteSubscriptionChain(message);
        }
示例#2
0
        public static void ExecuteSubscriptionChain(SubscriptionChainRequestMessage subscriptionChainRequest)
        {
            InformationContext.Current.IsExecutingSubscriptions = true;
            SubscriptionChainRequestContent requestContent =
                SubscriptionChainRequestContent.RetrieveFromDefaultLocation(subscriptionChainRequest.ContentItemID);

            requestContent.ProcessingStartTime = DateTime.UtcNow;
            requestContent.StoreInformation();
            string[] subscriptionTargetList =
                requestContent.SubscriptionTargetCollection.CollectionContent.Select(subTarget => subTarget.BlobLocation)
                .ToArray();
            var subscriptions    = SubscribeSupport.GetSubscriptionChainItemsInOrderOfExecution(subscriptionTargetList);
            int currSubscription = 1;
            var informationObjectSubscriptions =
                subscriptions.Where(sub => sub.SubscriptionType != SubscribeSupport.SubscribeType_WebPageToSource).
                ToArray();
            var webPageSubscriptions =
                subscriptions.Where(sub => sub.SubscriptionType == SubscribeSupport.SubscribeType_WebPageToSource).
                ToArray();

            foreach (var subscription in informationObjectSubscriptions)
            {
                ExecuteSubscription(subscription);
                Debug.WriteLine("Executing subscription {0} of total {1} of {2} for {3}", currSubscription++, subscriptions.Length, subscription.SubscriptionType,
                                subscription.SubscriberRelativeLocation);
            }
            requestContent.ProcessingEndTimeInformationObjects = DateTime.UtcNow;
            requestContent.StoreInformation();
            foreach (var subscription in webPageSubscriptions)
            {
                //ExecuteSubscription(subscription);
                OperationRequest operationRequest = new OperationRequest();
                operationRequest.SubscriberNotification = subscription;
                QueueSupport.PutToOperationQueue(operationRequest);
                Debug.WriteLine("Executing subscription {0} of total {1} of {2} for {3}", currSubscription++, subscriptions.Length, subscription.SubscriptionType,
                                subscription.SubscriberRelativeLocation);
            }
            requestContent.ProcessingEndTimeWebTemplatesRendering = DateTime.UtcNow;
            requestContent.ProcessingEndTime = DateTime.UtcNow;
            requestContent.StoreInformation();
            InformationContext.Current.IsExecutingSubscriptions = false;
        }
示例#3
0
        public static void AddPendingRequests(IContainerOwner owner, string[] subscriptionTargets)
        {
            if (owner == null)
            {
                throw new ArgumentNullException("owner");
            }
            var      requestContent = SubscriptionChainRequestContent.CreateDefault();
            DateTime submitTime     = DateTime.UtcNow;
            string   dateTimePrefix = submitTime.ToString("yyyyMMdd_HHmmss");

            requestContent.ID = dateTimePrefix + "_" + requestContent.ID;
            requestContent.SubscriptionTargetCollection.CollectionContent.
            AddRange(subscriptionTargets.Select(target => new SubscriptionTarget()
            {
                BlobLocation = target
            }));
            requestContent.SubmitTime = submitTime;
            string ownerSubscriptionLocation = GetOwnerIDStatusBasedLocation(owner, requestContent.ID, StatusValue_Pending);

            requestContent.RelativeLocation = ownerSubscriptionLocation;
            requestContent.StoreInformation();
        }