in protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/messaging/SourceTypeDecoder.java [79:136]
private Source readSource(ProtonBuffer buffer, DecoderState state, ListTypeDecoder listDecoder) throws DecodeException {
final Source source = new Source();
@SuppressWarnings("unused")
final int size = listDecoder.readSize(buffer, state);
final int count = listDecoder.readCount(buffer, state);
if (count < MIN_SOURCE_LIST_ENTRIES) {
throw new DecodeException("Not enough entries in Source list encoding: " + count);
}
if (count > MAX_SOURCE_LIST_ENTRIES) {
throw new DecodeException("To many entries in Source list encoding: " + count);
}
for (int index = 0; index < count; ++index) {
switch (index) {
case 0:
source.setAddress(state.getDecoder().readString(buffer, state));
break;
case 1:
final long durability = state.getDecoder().readUnsignedInteger(buffer, state, 0);
source.setDurable(TerminusDurability.valueOf(durability));
break;
case 2:
final Symbol expiryPolicy = state.getDecoder().readSymbol(buffer, state);
source.setExpiryPolicy(expiryPolicy == null ? TerminusExpiryPolicy.SESSION_END : TerminusExpiryPolicy.valueOf(expiryPolicy));
break;
case 3:
final UnsignedInteger timeout = state.getDecoder().readUnsignedInteger(buffer, state);
source.setTimeout(timeout == null ? UnsignedInteger.ZERO : timeout);
break;
case 4:
source.setDynamic(state.getDecoder().readBoolean(buffer, state, false));
break;
case 5:
source.setDynamicNodeProperties(state.getDecoder().readMap(buffer, state));
break;
case 6:
source.setDistributionMode(state.getDecoder().readSymbol(buffer, state));
break;
case 7:
source.setFilter(state.getDecoder().readMap(buffer, state));
break;
case 8:
source.setDefaultOutcome(state.getDecoder().readObject(buffer, state, Outcome.class));
break;
case 9:
source.setOutcomes(state.getDecoder().readMultiple(buffer, state, Symbol.class));
break;
case 10:
source.setCapabilities(state.getDecoder().readMultiple(buffer, state, Symbol.class));
break;
}
}
return source;
}