public static AMQPOutcome getOutcome(TLVList list) { AMQPOutcome outcome = null; Byte byteCode = list.Constructor.getDescriptorCode().Value; StateCodes code = (StateCodes)byteCode; switch (code) { case StateCodes.ACCEPTED: outcome = new AMQPAccepted(); break; case StateCodes.MODIFIED: outcome = new AMQPModified(); break; case StateCodes.REJECTED: outcome = new AMQPRejected(); break; case StateCodes.RELEASED: outcome = new AMQPReleased(); break; default: throw new MalformedMessageException("Received header with unrecognized outcome code"); } return(outcome); }
public void fill(TLVList list) { if (list.getList().Count > 0) { TLVAmqp element = list.getList()[0]; if (!element.isNull()) { _address = AMQPUnwrapper <AMQPSymbol> .unwrapString(element); } } if (list.getList().Count > 1) { TLVAmqp element = list.getList()[1]; if (!element.isNull()) { _durable = (TerminusDurability)AMQPUnwrapper <AMQPSymbol> .unwrapUInt(element); } } if (list.getList().Count > 2) { TLVAmqp element = list.getList()[2]; if (!element.isNull()) { _expiryPeriod = (TerminusExpiryPolicy)StringEnum.Parse(typeof(TerminusExpiryPolicy), AMQPUnwrapper <AMQPSymbol> .unwrapSymbol(element).Value); } } if (list.getList().Count > 3) { TLVAmqp element = list.getList()[3]; if (!element.isNull()) { _timeout = AMQPUnwrapper <AMQPSymbol> .unwrapUInt(element); } } if (list.getList().Count > 4) { TLVAmqp element = list.getList()[4]; if (!element.isNull()) { _dynamic = AMQPUnwrapper <AMQPSymbol> .unwrapBool(element); } } if (list.getList().Count > 5) { TLVAmqp element = list.getList()[5]; if (!element.isNull()) { if (_dynamic != null) { if (_dynamic.Value) { _dynamicNodeProperties = AMQPUnwrapper <AMQPSymbol> .unwrapMap(element); } else { throw new MalformedMessageException("Received malformed Source: dynamic-node-properties can't be specified when dynamic flag is false"); } } else { throw new MalformedMessageException("Received malformed Source: dynamic-node-properties can't be specified when dynamic flag is not set"); } } } if (list.getList().Count > 6) { TLVAmqp element = list.getList()[6]; if (!element.isNull()) { _distributionMode = (DistributionMode)StringEnum.Parse(typeof(DistributionMode), AMQPUnwrapper <AMQPSymbol> .unwrapSymbol(element).Value); } } if (list.getList().Count > 7) { TLVAmqp element = list.getList()[7]; if (!element.isNull()) { _filter = AMQPUnwrapper <AMQPSymbol> .unwrapMap(element); } } if (list.getList().Count > 8) { TLVAmqp element = list.getList()[8]; if (!element.isNull()) { AMQPType code = element.Code; if (code != AMQPType.LIST_0 && code != AMQPType.LIST_8 && code != AMQPType.LIST_32) { throw new MalformedMessageException("Expected type 'OUTCOME' - received: " + element.Code); } _defaultOutcome = AMQPFactory.getOutcome((TLVList)element); _defaultOutcome.fill((TLVList)element); } } if (list.getList().Count > 9) { TLVAmqp element = list.getList()[9]; if (!element.isNull()) { _outcomes = AMQPUnwrapper <AMQPSymbol> .unwrapArray(element); } } if (list.getList().Count > 10) { TLVAmqp element = list.getList()[10]; if (!element.isNull()) { _capabilities = AMQPUnwrapper <AMQPSymbol> .unwrapArray(element); } } }