/** * Given an AMQP Section encode it and return the buffer holding the encoded value * * @param section * the AMQP Section value to encode. * * @return a buffer holding the encoded bytes of the given AMQP Section object. */ public static ByteBuf encode(Section section) { if (section == null) { return null; } AmqpWritableBuffer buffer = new AmqpWritableBuffer(); EncoderImpl encoder = getEncoder(); encoder.setByteBuffer(buffer); encoder.writeObject(section); encoder.setByteBuffer((WritableBuffer) null); return buffer.getBuffer(); }
public AMQPType getTypeFromClass(final Class clazz) { return getTypeFromClass(clazz, null); }
@Override public void writeCharacter(final Character c) { if(c == null) { writeNull(); } else { writeCharacter(c.charValue()); } }
public void writeDescribedType(final DescribedType d) { if(d == null) { writeNull(); } else { _buffer.put(DESCRIBED_TYPE_OP); writeObject(d.getDescriptor()); writeObject(d.getDescribed()); } }
writeArray((boolean[])o); writeArray((byte[])o); writeArray((short[])o); writeArray((int[])o); writeArray((long[])o); writeArray((float[])o); writeArray((double[])o); writeArray((char[])o); writeArray((Object[]) o); writeList((List)o); writeMap((Map)o); writeDescribedType((DescribedType)o);
FrameWriter(EncoderImpl encoder, int maxFrameSize, byte frameType, TransportImpl transport) { this.encoder = encoder; this.maxFrameSize = maxFrameSize; this.frameType = frameType; this.transport = transport; encoder.setByteBuffer(frameBuffer); }
@Override protected void writeEncodedValue(final List val) { getEncoder().writeRaw((byte)val.size()); final int count = val.size(); for(int i = 0; i < count; i++) { Object element = val.get(i); TypeEncoding elementEncoding = getEncoder().getType(element).getEncoding(element); elementEncoding.writeConstructor(); elementEncoding.writeValue(element); } }
@Override public void write(AmqpValue value) { WritableBuffer buffer = getEncoder().getBuffer(); buffer.put(EncodingCodes.DESCRIBED_TYPE_INDICATOR); buffer.put(EncodingCodes.SMALLULONG); buffer.put(DESCRIPTOR_CODE); getEncoder().writeObject(value.getValue()); }
@Override public void write(Footer val) { WritableBuffer buffer = getEncoder().getBuffer(); buffer.put(EncodingCodes.DESCRIBED_TYPE_INDICATOR); buffer.put(EncodingCodes.SMALLULONG); buffer.put(DESCRIPTOR_CODE); MapType mapType = (MapType) getEncoder().getType(val.getValue()); mapType.write(val.getValue()); }
AMQPType underlyingType = encoder.getTypeFromClass(val.getClass().getComponentType()); return underlyingType.getCanonicalEncoding(); AMQPType underlyingType = encoder.getTypeFromClass(val.getClass().getComponentType()); boolean checkTypes = false; underlyingType = encoder.getType(val[0]); if(checkTypes && encoder.getType(val[i]) != underlyingType) .getType(val[i]) + " in array");
private int writePerformative(Object frameBody, ReadableBuffer payload, Runnable onPayloadTooLarge) { frameBuffer.position(frameStart + FRAME_HEADER_SIZE); if (frameBody != null) { encoder.writeObject(frameBody); } int performativeSize = frameBuffer.position() - frameStart; if (onPayloadTooLarge != null && maxFrameSize > 0 && payload != null && (payload.remaining() + performativeSize) > maxFrameSize) { // Next iteration will re-encode the frame body again with updates from the <payload-to-large> // handler and then we can move onto the body portion. onPayloadTooLarge.run(); performativeSize = writePerformative(frameBody, payload, null); } return performativeSize; }
Decimal32Type(final EncoderImpl encoder, final DecoderImpl decoder) { _decimal32Encoder = new Decimal32Encoding(encoder, decoder); encoder.register(Decimal32.class, this); decoder.register(this); }
public TypeEncoding<T> getEncoding(final T val) { M asUnderlying = wrap(val); TypeEncoding<M> underlyingEncoding = _encoder.getType(asUnderlying).getEncoding(asUnderlying); TypeEncoding<T> encoding = _encodings.get(underlyingEncoding); if(encoding == null) { encoding = new DynamicDescribedTypeEncoding(underlyingEncoding); _encodings.put(underlyingEncoding, encoding); } return encoding; }
@Override public void write(Data data) { WritableBuffer buffer = getEncoder().getBuffer(); buffer.put(EncodingCodes.DESCRIBED_TYPE_INDICATOR); buffer.put(EncodingCodes.SMALLULONG); buffer.put(DESCRIPTOR_CODE); getEncoder().writeBinary(data.getValue()); }
writeArray((boolean[])array); writeArray((byte[])array); writeArray((short[])array); writeArray((int[])array); writeArray((long[])array); writeArray((float[])array); writeArray((double[])array); writeArray((char[])array); writeArray((Object[]) array);
writeArray((boolean[])o); writeArray((byte[])o); writeArray((short[])o); writeArray((int[])o); writeArray((long[])o); writeArray((float[])o); writeArray((double[])o); writeArray((char[])o); writeArray((Object[]) o); writeList((List)o); writeMap((Map)o); writeDescribedType((DescribedType)o);