コード例 #1
0
        public List <AsyncQueueStep> GetActiveAsyncQueueRequests(int partitionId, string processInstanceName, TimeSpan failoverWaitThreshold, AsyncQueuePriority?priority = null, bool haRequestOnly = false, int batchSize = 10)
        {
            if (partitionId >= this.PartitionCount)
            {
                throw new ArgumentOutOfRangeException(string.Format("Invalid Parition Id {0} passed. Valid partition values are 0 to {1}", partitionId, this.PartitionCount - 1));
            }
            AsyncQueueSession.ValidateProcessInstanceName(processInstanceName);
            object propertyValue = this.GetAllPhysicalPartitions()[partitionId];
            MultiValuedProperty <AsyncQueueOwnerInfo> propertyValue2 = new MultiValuedProperty <AsyncQueueOwnerInfo>();
            QueryFilter queryFilter = QueryFilter.AndTogether(new QueryFilter[]
            {
                AsyncQueueSession.NewComparisonFilter(DalHelper.PhysicalInstanceKeyProp, propertyValue),
                AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.ProcessInstanceNameProperty, processInstanceName),
                AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.OwnerListQueryProperty, propertyValue2),
                AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.BatchSizeQueryProperty, batchSize),
                AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.FailoverWaitInSecondsQueryProperty, failoverWaitThreshold.TotalSeconds)
            });

            if (haRequestOnly)
            {
                AsyncQueueFlags asyncQueueFlags = AsyncQueueFlags.HARequest;
                queryFilter = QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.FlagsProperty, asyncQueueFlags)
                });
            }
            if (priority != null)
            {
                queryFilter = QueryFilter.AndTogether(new QueryFilter[]
                {
                    queryFilter,
                    AsyncQueueSession.NewComparisonFilter(AsyncQueueCommonSchema.PriorityProperty, (byte)priority.Value)
                });
            }
            return(this.dataProviderDirectory.Find <AsyncQueueStep>(queryFilter, null, true, null).Cast <AsyncQueueStep>().ToList <AsyncQueueStep>());
        }
コード例 #2
0
 public AsyncQueueOwnerInfo(string ownerId, AsyncQueueFlags flags)
 {
     this.OwnerId = ownerId;
     this.Flags   = flags;
 }