use of org.apache.qpid.proton.codec.ReadableBuffer in project vertx-proton by vert-x3.
the class ProtonReadableBufferImplTest method testDuplicate.
@Test
public void testDuplicate() {
byte[] data = new byte[] { 0, 1, 2, 3, 4 };
ByteBuf byteBuffer = Unpooled.wrappedBuffer(data);
ProtonReadableBufferImpl buffer = new ProtonReadableBufferImpl(byteBuffer);
ReadableBuffer duplicate = buffer.duplicate();
for (int i = 0; i < data.length; i++) {
assertEquals(data[i], duplicate.get());
}
assertFalse(duplicate.hasRemaining());
}
use of org.apache.qpid.proton.codec.ReadableBuffer in project vertx-proton by vert-x3.
the class ProtonReceiverImpl method handlePartial.
private void handlePartial(final Receiver receiver, final Delivery delivery) {
if (sessionIncomingCapacity <= 0 || maxFrameSize <= 0 || session.getIncomingBytes() < windowFullThreshhold) {
// No window, or there is still capacity, so do nothing.
} else {
// room made for receiving more of the delivery.
if (delivery.available() > 0) {
ReadableBuffer buff = receiver.recv();
if (splitContent == null && buff instanceof CompositeReadableBuffer) {
// Its a composite and there is no prior partial content, use it.
splitContent = (CompositeReadableBuffer) buff;
} else {
int remaining = buff.remaining();
if (remaining > 0) {
if (splitContent == null) {
splitContent = new CompositeReadableBuffer();
}
byte[] chunk = new byte[remaining];
buff.get(chunk);
splitContent.append(chunk);
}
}
}
}
}
use of org.apache.qpid.proton.codec.ReadableBuffer in project vertx-proton by vert-x3.
the class ProtonReceiverImpl method onDelivery.
void onDelivery() {
if (this.handler == null) {
return;
}
Receiver receiver = getReceiver();
Delivery delivery = receiver.current();
if (delivery != null) {
if (delivery.isAborted()) {
handleAborted(receiver, delivery);
return;
}
UnsignedLong maxMessageSize = getMaxMessageSize();
if (maxMessageSize != null) {
if (checkMaxMessageSize(maxMessageSize, delivery, receiver)) {
return;
}
;
}
if (delivery.isPartial()) {
handlePartial(receiver, delivery);
// return and allow further frames to arrive.
return;
}
// Complete prior partial content if needed, or grab it all.
ReadableBuffer data = receiver.recv();
if (splitContent != null) {
data = completePartial(data);
}
receiver.advance();
MessageImpl msg = (MessageImpl) Proton.message();
ProtonDeliveryImpl delImpl = new ProtonDeliveryImpl(delivery);
try {
msg.decode(data);
} catch (Throwable t) {
LOG.debug("Unable to decode message, undeliverable", t);
handleDecodeFailure(receiver, delImpl);
return;
}
handler.handle(delImpl, msg);
if (autoAccept && delivery.getLocalState() == null) {
accepted(delImpl, true);
}
if (prefetch > 0) {
// Replenish credit if prefetch is configured.
// TODO: batch credit replenish, optionally flush if exceeding a given threshold?
flow(1, false);
} else {
processForDrainCompletion();
}
}
}
use of org.apache.qpid.proton.codec.ReadableBuffer in project azure-iot-sdk-java by Azure.
the class AmqpFeedbackReceivedHandlerTest method createProtonObjects.
private void createProtonObjects() {
final String exceptionMessage = "Not expected function called";
message = Proton.message();
receiver = new Receiver() {
@Override
public void flow(int i) {
}
@Override
public int recv(byte[] bytes, int i, int i1) {
return 0;
}
@Override
public ReadableBuffer recv() {
return readBuf;
}
@Override
public int recv(WritableBuffer writableBuffer) {
return 0;
}
@Override
public void drain(int i) {
}
@Override
public boolean advance() {
return false;
}
@Override
public boolean draining() {
return false;
}
@Override
public void setDrain(boolean b) {
}
@Override
public String getName() {
return RECEIVE_TAG;
}
@Override
public Delivery delivery(byte[] bytes) {
return null;
}
@Override
public Delivery delivery(byte[] bytes, int i, int i1) {
return null;
}
@Override
public Delivery head() {
return null;
}
@Override
public Delivery current() {
return delivery;
}
@Override
public org.apache.qpid.proton.amqp.transport.Source getSource() {
return null;
}
@Override
public org.apache.qpid.proton.amqp.transport.Target getTarget() {
return null;
}
@Override
public void setSource(org.apache.qpid.proton.amqp.transport.Source source) {
}
@Override
public void setTarget(org.apache.qpid.proton.amqp.transport.Target target) {
}
@Override
public org.apache.qpid.proton.amqp.transport.Source getRemoteSource() {
return null;
}
@Override
public org.apache.qpid.proton.amqp.transport.Target getRemoteTarget() {
return null;
}
@Override
public Link next(EnumSet<EndpointState> enumSet, EnumSet<EndpointState> enumSet1) {
return null;
}
@Override
public int getCredit() {
return 0;
}
@Override
public int getQueued() {
return 0;
}
@Override
public int getUnsettled() {
return 0;
}
@Override
public Session getSession() {
return session;
}
@Override
public SenderSettleMode getSenderSettleMode() {
return null;
}
@Override
public void setSenderSettleMode(SenderSettleMode senderSettleMode) {
}
@Override
public SenderSettleMode getRemoteSenderSettleMode() {
return null;
}
@Override
public ReceiverSettleMode getReceiverSettleMode() {
return null;
}
@Override
public void setReceiverSettleMode(ReceiverSettleMode receiverSettleMode) {
}
@Override
public ReceiverSettleMode getRemoteReceiverSettleMode() {
return null;
}
@Override
public void setRemoteSenderSettleMode(SenderSettleMode senderSettleMode) {
}
@Override
public Map<Symbol, Object> getProperties() {
return null;
}
@Override
public void setProperties(Map<Symbol, Object> map) {
}
@Override
public Map<Symbol, Object> getRemoteProperties() {
return null;
}
@Override
public int drained() {
return 0;
}
@Override
public int getRemoteCredit() {
return 0;
}
@Override
public boolean getDrain() {
return false;
}
@Override
public void detach() {
}
@Override
public boolean detached() {
return false;
}
@Override
public void setOfferedCapabilities(Symbol[] symbols) {
}
@Override
public Symbol[] getOfferedCapabilities() {
return new Symbol[0];
}
@Override
public Symbol[] getRemoteOfferedCapabilities() {
return new Symbol[0];
}
@Override
public void setDesiredCapabilities(Symbol[] symbols) {
}
@Override
public Symbol[] getDesiredCapabilities() {
return new Symbol[0];
}
@Override
public Symbol[] getRemoteDesiredCapabilities() {
return new Symbol[0];
}
@Override
public void setMaxMessageSize(UnsignedLong unsignedLong) {
}
@Override
public UnsignedLong getMaxMessageSize() {
return null;
}
@Override
public UnsignedLong getRemoteMaxMessageSize() {
return null;
}
@Override
public EndpointState getLocalState() {
return null;
}
@Override
public EndpointState getRemoteState() {
return null;
}
@Override
public ErrorCondition getCondition() {
return null;
}
@Override
public void setCondition(ErrorCondition errorCondition) {
}
@Override
public ErrorCondition getRemoteCondition() {
return null;
}
@Override
public void free() {
}
@Override
public void open() {
}
@Override
public void close() {
}
@Override
public void setContext(Object o) {
}
@Override
public Object getContext() {
return null;
}
@Override
public Record attachments() {
return null;
}
};
event = new Event() {
@Override
public EventType getEventType() {
return null;
}
@Override
public Event.Type getType() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Object getContext() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Handler getRootHandler() {
return null;
}
@Override
public void dispatch(Handler hndlr) throws HandlerException {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public void redispatch(EventType eventType, Handler handler) throws HandlerException {
}
@Override
public void delegate() throws HandlerException {
}
@Override
public Connection getConnection() {
return connection;
}
@Override
public Session getSession() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Link getLink() {
return receiver;
}
@Override
public Sender getSender() {
return null;
}
@Override
public Receiver getReceiver() {
return null;
}
@Override
public Delivery getDelivery() {
return delivery;
}
@Override
public Transport getTransport() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Reactor getReactor() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Selectable getSelectable() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Task getTask() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Event copy() {
throw new UnsupportedOperationException(exceptionMessage);
}
@Override
public Record attachments() {
throw new UnsupportedOperationException(exceptionMessage);
}
};
delivery = new Delivery() {
@Override
public byte[] getTag() {
return new byte[0];
}
@Override
public Link getLink() {
return receiver;
}
@Override
public DeliveryState getLocalState() {
return null;
}
@Override
public DeliveryState getRemoteState() {
return null;
}
@Override
public int getMessageFormat() {
return 0;
}
@Override
public int available() {
return 0;
}
@Override
public void disposition(DeliveryState deliveryState) {
}
@Override
public void settle() {
}
@Override
public boolean isSettled() {
return false;
}
@Override
public boolean isAborted() {
return false;
}
@Override
public boolean remotelySettled() {
return false;
}
@Override
public void free() {
}
@Override
public Delivery getWorkNext() {
return null;
}
@Override
public Delivery next() {
return null;
}
@Override
public boolean isWritable() {
return false;
}
@Override
public boolean isReadable() {
return true;
}
@Override
public void setContext(Object o) {
}
@Override
public Object getContext() {
return null;
}
@Override
public boolean isUpdated() {
return false;
}
@Override
public void clear() {
}
@Override
public boolean isPartial() {
return false;
}
@Override
public int pending() {
return 0;
}
@Override
public boolean isBuffered() {
return false;
}
@Override
public void setDefaultDeliveryState(DeliveryState deliveryState) {
}
@Override
public DeliveryState getDefaultDeliveryState() {
return null;
}
@Override
public void setMessageFormat(int i) {
}
@Override
public Record attachments() {
return null;
}
};
}
Aggregations