in sdk/core/azure_core_amqp/src/messaging.rs [436:519]
fn from(list: AmqpList) -> Self {
let mut builder = AmqpSource::builder();
let field_count = list.len();
if field_count >= 1 {
if let Some(AmqpValue::String(address)) = list.0.first() {
builder = builder.with_address(address.clone());
}
}
if field_count >= 2 {
if let Some(AmqpValue::UByte(durable)) = list.0.get(1) {
match *durable {
0 => {
builder = builder.with_durable(TerminusDurability::None);
}
1 => {
builder = builder.with_durable(TerminusDurability::Configuration);
}
2 => {
builder = builder.with_durable(TerminusDurability::UnsettledState);
}
_ => {
panic!("Invalid durable value");
}
}
}
}
if field_count >= 3 {
if let Some(AmqpValue::Symbol(expiry_policy)) = list.0.get(2) {
builder = builder.with_expiry_policy(expiry_policy.clone().into());
}
}
if field_count >= 4 {
if let Some(AmqpValue::UInt(timeout)) = list.0.get(3) {
builder = builder.with_timeout(*timeout);
}
}
if field_count >= 5 {
if let Some(AmqpValue::Boolean(dynamic)) = list.0.get(4) {
builder = builder.with_dynamic(*dynamic);
}
}
if field_count >= 6 {
if let Some(AmqpValue::Map(dynamic_node_properties)) = list.0.get(5) {
let dynamic_node_properties: AmqpOrderedMap<AmqpSymbol, AmqpValue> =
dynamic_node_properties
.iter()
.map(|(k, v)| (k.clone().into(), v.clone()))
.collect();
builder = builder.with_dynamic_node_properties(dynamic_node_properties);
}
}
if field_count >= 7 {
if let Some(AmqpValue::Symbol(distribution_mode)) = list.0.get(6) {
builder = builder.with_distribution_mode(distribution_mode.clone().into());
}
}
if field_count >= 8 {
if let Some(AmqpValue::Map(filter)) = list.0.get(7) {
let filter: AmqpOrderedMap<AmqpSymbol, AmqpValue> = filter
.iter()
.map(|(k, v)| (k.clone().into(), v.clone()))
.collect();
builder = builder.with_filter(filter);
}
}
if field_count >= 9 {
if let Some(AmqpValue::Symbol(default_outcome)) = list.0.get(8) {
builder = builder.with_default_outcome(default_outcome.clone().into());
}
}
if field_count >= 10 {
if let Some(AmqpValue::Array(outcomes)) = list.0.get(9) {
builder =
builder.with_outcomes(outcomes.iter().map(|v| v.clone().into()).collect());
}
}
if field_count >= 11 {
if let Some(AmqpValue::Array(capabilities)) = list.0.get(10) {
builder = builder
.with_capabilities(capabilities.iter().map(|v| v.clone().into()).collect());
}
}
builder.build()
}