/// <summary>
        /// Gets the actions based on the status.
        /// </summary>
        /// <param name="status">The status.</param>
        /// <returns>IList{TRequest}.</returns>
        public IList <TAction> GetActions(TableActionQueueItemStatus status)
        {
            var condition = TableQuery.GenerateFilterCondition("Status", QueryComparisons.Equal, status.ToString());

            var query =
                new TableQuery <TAction>()
                .Where(condition);

            var table = TableClient.GetTableReference(TableName);

            IList <TAction> result = null;

            RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy()
            .ExecuteAction(() => { result = table.ExecuteQuery(query).ToList(); });

            return(result);
        }
        /// <summary>
        ///     Gets the queued requests by status.
        /// </summary>
        /// <typeparam name="TRequest">The type of the t request.</typeparam>
        /// <param name="status">The status.</param>
        /// <returns>IList{TRequest}.</returns>
        /// <exception cref="System.Exception"></exception>
        public override IList <TRequest> GetQueuedRequestsByStatus <TRequest>(TableActionQueueItemStatus status)
        {
            switch (typeof(TRequest).Name)
            {
            case "ShardletMoveRequest":
            {
                var action = GetShardletMoveRequestManager();
                return(action.GetActions(status) as IList <TRequest>);
            }

            case "ShardCreationRequest":
            {
                var action = GetShardCreationRequestManager();
                return(action.GetActions(status) as IList <TRequest>);
            }

            case "ShardSyncRequest":
            {
                var action = GetShardSyncRequestManager();
                return(action.GetActions(status) as IList <TRequest>);
            }

            case "ShardDeletionRequest":
            {
                var action = GetShardDeletionRequestManager();
                return(action.GetActions(status) as IList <TRequest>);
            }

            case "ShardMapPublishingRequest":
            {
                var action = GetShardMapPublishingRequestManager();
                return(action.GetActions(status) as IList <TRequest>);
            }

            default:
            {
                throw new Exception(typeof(TRequest).Name + " Type is not supported by this queue");
            }
            }
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseQueueRequest"/> class.
 /// </summary>
 public BaseQueueRequest()
 {
     QueueId = -1;
     Status  = TableActionQueueItemStatus.Queued;
 }
 public static IList <TRequest> GetQueuedRequestsByStatus <TRequest>(TableActionQueueItemStatus filter)
     where TRequest : BaseQueueRequest
 {
     return(GetQueue().GetQueuedRequestsByStatus <TRequest>(filter));
 }
 /// <summary>
 ///     Gets the queued requests of type TRequest by status.
 /// </summary>
 /// <typeparam name="TRequest">The type of requests to return</typeparam>
 /// <param name="status">The status to filter the queue on.</param>
 /// <returns>IList{TRequest}.</returns>
 public abstract IList <TRequest> GetQueuedRequestsByStatus <TRequest>(TableActionQueueItemStatus status)
     where TRequest : BaseQueueRequest;