/// <summary> /// Get all rules associated with the subscription. /// </summary> /// /// <param name="timeout">The per-try timeout specified in the RetryOptions.</param> /// /// <returns>Returns a list of rules description</returns> private async Task <IList <RuleProperties> > GetRulesInternalAsync(TimeSpan timeout) { var amqpRequestMessage = AmqpRequestMessage.CreateRequest( ManagementConstants.Operations.EnumerateRulesOperation, timeout, null); amqpRequestMessage.Map[ManagementConstants.Properties.Top] = int.MaxValue; amqpRequestMessage.Map[ManagementConstants.Properties.Skip] = 0; var response = await ManagementUtilities.ExecuteRequestResponseAsync( _connectionScope, _managementLink, amqpRequestMessage, null, timeout).ConfigureAwait(false); var ruleDescriptions = new List <RuleProperties>(); if (response.StatusCode == AmqpResponseStatusCode.OK) { var ruleList = response.GetListValue <AmqpMap>(ManagementConstants.Properties.Rules); foreach (var entry in ruleList) { var amqpRule = (AmqpRuleDescriptionCodec)entry[ManagementConstants.Properties.RuleDescription]; var ruleDescription = AmqpMessageConverter.GetRuleDescription(amqpRule); ruleDescriptions.Add(ruleDescription); } } else if (response.StatusCode == AmqpResponseStatusCode.NoContent) { // Do nothing. Return empty list; } else { throw response.ToMessagingContractException(); } return(ruleDescriptions); }