@Override public int encode2(byte[] data, int offset, int length) { ByteBuffer buffer = ByteBuffer.wrap(data, offset, length); WritableBuffer.ByteBufferWrapper first = new WritableBuffer.ByteBufferWrapper(buffer); DroppingWritableBuffer second = new DroppingWritableBuffer(); CompositeWritableBuffer composite = new CompositeWritableBuffer(first, second); int start = composite.position(); encode(composite); return composite.position() - start; }
@Override public void putFloat(float f) { putInt(Float.floatToRawIntBits(f)); }
@Override public void putDouble(double d) { putLong(Double.doubleToRawLongBits(d)); }
@Override public void put(String value) { if (_first.hasRemaining()) { byte[] utf8Bytes = value.getBytes(StandardCharsets.UTF_8); put(utf8Bytes, 0, utf8Bytes.length); } else { _second.put(value); } } }
public final int output(byte[] bytes, int offset, int size) { int written = 0; if(_overflowBuffer.hasRemaining()) { final int overflowWritten = Math.min(size, _overflowBuffer.remaining()); _overflowBuffer.get(bytes, offset, overflowWritten); written+=overflowWritten; } if(!_overflowBuffer.hasRemaining()) { _overflowBuffer.rewind(); CompositeWritableBuffer outputBuffer = new CompositeWritableBuffer( new WritableBuffer.ByteBufferWrapper(ByteBuffer.wrap(bytes, offset + written, size - written)), new WritableBuffer.ByteBufferWrapper(_overflowBuffer)); written += process(outputBuffer); } return written; }
new CompositeWritableBuffer( new WritableBuffer.ByteBufferWrapper(ByteBuffer.wrap(bytes, offset + written, size - written)), new WritableBuffer.ByteBufferWrapper(_overflowBuffer)); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processHeader(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processOpen(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processBegin(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processAttach(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processReceiverDisposition(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processReceiverFlow(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processMessageData(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processSenderDisposition(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processSenderFlow(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processDetach(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processEnd(outputBuffer); if( outputBuffer.remaining() >= _maxFrameSize ) { written += processClose(outputBuffer); }}}}}}}}}}}}
public void putShort(short s) { int remaining = _first.remaining(); if(remaining >= 2) { _first.putShort(s); } else if(remaining ==0 ) { _second.putShort(s); } else { ByteBuffer wrap = ByteBuffer.wrap(new byte[2]); wrap.putShort(s); wrap.flip(); put(wrap); } }
@Override public EncodedMessage transform(Message msg) throws Exception { if( msg == null ) return null; try { if( msg.getBooleanProperty(prefixVendor + "NATIVE") ) { return null; } } catch (MessageFormatException e) { return null; } ProtonJMessage amqp = convert(msg); long messageFormat; try { messageFormat = msg.getLongProperty(this.messageFormatKey); } catch (MessageFormatException e) { return null; } ByteBuffer buffer = ByteBuffer.wrap(new byte[1024 * 4]); final DroppingWritableBuffer overflow = new DroppingWritableBuffer(); int c = amqp.encode(new CompositeWritableBuffer( new WritableBuffer.ByteBufferWrapper(buffer), overflow)); if( overflow.position() > 0 ) { buffer = ByteBuffer.wrap(new byte[1024 * 4 + overflow.position()]); c = amqp.encode(new WritableBuffer.ByteBufferWrapper(buffer)); } return new EncodedMessage(messageFormat, buffer.array(), 0, c); }
public int encode2(byte[] data, int offset, int length) { ByteBuffer buffer = ByteBuffer.wrap(data, offset, length); WritableBuffer.ByteBufferWrapper first = new WritableBuffer.ByteBufferWrapper(buffer); DroppingWritableBuffer second = new DroppingWritableBuffer(); CompositeWritableBuffer composite = new CompositeWritableBuffer(first, second); int start = composite.position(); encode(composite); return composite.position() - start; }
public void putLong(long l) { int remaining = _first.remaining(); if(remaining >= 8) { _first.putLong(l); } else if(remaining ==0 ) { _second.putLong(l); } else { ByteBuffer wrap = ByteBuffer.wrap(new byte[8]); wrap.putLong(l); wrap.flip(); put(wrap); } }
int c = amqp.encode(new CompositeWritableBuffer(new WritableBuffer.ByteBufferWrapper(buffer), overflow)); if( overflow.position() > 0 ) { buffer = ByteBuffer.wrap(new byte[1024*4+overflow.position()]);
public void putFloat(float f) { putInt(Float.floatToRawIntBits(f)); }
public void putDouble(double d) { putLong(Double.doubleToRawLongBits(d)); }
@Override public int encode2(byte[] data, int offset, int length) { ByteBuffer buffer = ByteBuffer.wrap(data, offset, length); WritableBuffer.ByteBufferWrapper first = new WritableBuffer.ByteBufferWrapper(buffer); DroppingWritableBuffer second = new DroppingWritableBuffer(); CompositeWritableBuffer composite = new CompositeWritableBuffer(first, second); int start = composite.position(); encode(composite); return composite.position() - start; }
public void putLong(long l) { int remaining = _first.remaining(); if(remaining >= 8) { _first.putLong(l); } else if(remaining ==0 ) { _second.putLong(l); } else { ByteBuffer wrap = ByteBuffer.wrap(new byte[8]); wrap.putLong(l); wrap.flip(); put(wrap); } }
public void putFloat(float f) { putInt(Float.floatToRawIntBits(f)); }
public void putDouble(double d) { putLong(Double.doubleToRawLongBits(d)); }
@Override public int encode2(byte[] data, int offset, int length) { ByteBuffer buffer = ByteBuffer.wrap(data, offset, length); WritableBuffer.ByteBufferWrapper first = new WritableBuffer.ByteBufferWrapper(buffer); DroppingWritableBuffer second = new DroppingWritableBuffer(); CompositeWritableBuffer composite = new CompositeWritableBuffer(first, second); int start = composite.position(); encode(composite); return composite.position() - start; }
public void putInt(int i) { int remaining = _first.remaining(); if(remaining >= 4) { _first.putInt(i); } else if(remaining ==0 ) { _second.putInt(i); } else { ByteBuffer wrap = ByteBuffer.wrap(new byte[4]); wrap.putInt(i); wrap.flip(); put(wrap); } }
public void putFloat(float f) { putInt(Float.floatToRawIntBits(f)); }