private AzureQueueAdapterReceiver(QueueId queueId, AzureQueueDataManager queue)
 {
     if (queueId == null) throw new ArgumentNullException("queueId");
     if (queue == null) throw new ArgumentNullException("queue");
     
     Id = queueId;
     this.queue = queue;
 }
 public static IQueueAdapterReceiver Create(QueueId queueId, string dataConnectionString, string deploymentId)
 {
     if (queueId == null) throw new ArgumentNullException("queueId");
     if (String.IsNullOrEmpty(dataConnectionString)) throw new ArgumentNullException("dataConnectionString");
     if (String.IsNullOrEmpty(deploymentId)) throw new ArgumentNullException("deploymentId");
     
     var queue = new AzureQueueDataManager(queueId.ToString(), deploymentId, dataConnectionString);
     return new AzureQueueAdapterReceiver(queueId, queue);
 }
 private AzureQueueAdapterReceiver(QueueId queueId, AzureQueueDataManager queue)
 {
     if (queueId == null) throw new ArgumentNullException("queueId");
     if (queue == null) throw new ArgumentNullException("queue");
     
     Id = queueId;
     this.queue = queue;
     logger = LogManager.GetLogger(GetType().Name, LoggerType.Provider);
 }
 public async Task Shutdown(TimeSpan timeout)
 {
     try
     {
         // await the last storage operation, so after we shutdown and stop this receiver we don't get async operation completions from pending storage operations.
         if (outstandingTask != null)
             await outstandingTask;
     }
     finally
     {
         // remember that we shut down so we never try to read from the queue again.
         queue = null;
     }
 }
        /// <summary>
        /// Helper method for testing.
        /// </summary>
        /// <param name="providerName"></param>
        /// <param name="deploymentId"></param>
        /// <param name="storageConnectionString"></param>
        /// <param name="logger"></param>
        /// <returns></returns>
        public static async Task DeleteAllUsedAzureQueues(string providerName, string deploymentId, string storageConnectionString, Logger logger)
        {
            if (deploymentId != null)
            {
                var queueMapper = new HashRingBasedStreamQueueMapper(AzureQueueAdapterFactory.DEFAULT_NUM_QUEUES, providerName);
                List<QueueId> allQueues = queueMapper.GetAllQueues().ToList();

                if (logger != null) logger.Info("About to delete all {0} Stream Queues\n", allQueues.Count);
                foreach (var queueId in allQueues)
                {
                    var manager = new AzureQueueDataManager(queueId.ToString(), deploymentId, storageConnectionString);
                    await manager.DeleteQueue();
                }
            }
        }
        /// <summary>
        /// Helper method for testing. Clears all messages in all the queues used by the specifed stream provider.
        /// </summary>
        /// <param name="providerName">The Azure Queue stream privider name.</param>
        /// <param name="deploymentId">The deployment ID hosting the stream provider.</param>
        /// <param name="storageConnectionString">The azure storage connection string.</param>
        public static async Task ClearAllUsedAzureQueues(string providerName, string deploymentId, string storageConnectionString)
        {
            if (deploymentId != null)
            {
                var queueMapper = new HashRingBasedStreamQueueMapper(AzureQueueAdapterFactory.NumQueuesDefaultValue, providerName);
                List<QueueId> allQueues = queueMapper.GetAllQueues().ToList();

                var deleteTasks = new List<Task>();
                foreach (var queueId in allQueues)
                {
                    var manager = new AzureQueueDataManager(queueId.ToString(), deploymentId, storageConnectionString);
                    deleteTasks.Add(manager.ClearQueue());
                }

                await Task.WhenAll(deleteTasks);
            }
        }
 private async Task<AzureQueueDataManager> GetTableManager(string qName)
 {
     AzureQueueDataManager manager = new AzureQueueDataManager(qName, DeploymentId, StorageTestConstants.DataConnectionString);
     await manager.InitQueueAsync();
     return manager;
 }