package io.vertx.proton.streams.impl;
import org.apache.qpid.proton.amqp.messaging.Accepted;
import org.apache.qpid.proton.amqp.transport.DeliveryState;
import org.apache.qpid.proton.message.Message;
import io.vertx.core.Handler;
import io.vertx.proton.ProtonDelivery;
import io.vertx.proton.impl.ProtonDeliveryImpl;
import io.vertx.proton.streams.Tracker;
public class TrackerImpl implements Tracker {
private final Message message;
private volatile ProtonDeliveryImpl delivery;
private volatile Handler<Tracker> onUpdated;
public TrackerImpl(Message message, Handler<Tracker> onUpdated) {
this.message = message;
this.onUpdated = onUpdated;
}
@Override
public Message message() {
return message;
}
public ProtonDelivery delivery() {
return delivery;
}
public void setDelivery(ProtonDeliveryImpl delivery) {
this.delivery = delivery;
}
@Override
public boolean isAccepted() {
return delivery.getRemoteState() instanceof Accepted;
}
@Override
public DeliveryState getRemoteState() {
return delivery.getRemoteState();
}
@Override
public boolean isRemotelySettled() {
return delivery.remotelySettled();
}
public Handler<Tracker> handler() {
return onUpdated;
}
public void setHandler(Handler<Tracker> onUpdated) {
this.onUpdated = onUpdated;
}
}