use of org.apache.qpid.server.protocol.v1_0.type.transport.Role in project qpid-broker-j by apache.
the class Session_1_0 method updateDisposition.
void updateDisposition(final Role role, final Set<Binary> deliveryTags, final DeliveryState state, final boolean settled) {
final DeliveryRegistry deliveryRegistry = role == Role.RECEIVER ? _incomingDeliveryRegistry : _outgoingDeliveryRegistry;
SortedSet<UnsignedInteger> deliveryIds = deliveryTags.stream().map(deliveryRegistry::getDeliveryIdByTag).collect(Collectors.toCollection(TreeSet::new));
final Iterator<UnsignedInteger> iterator = deliveryIds.iterator();
if (iterator.hasNext()) {
UnsignedInteger begin = iterator.next();
UnsignedInteger end = begin;
while (iterator.hasNext()) {
final UnsignedInteger deliveryId = iterator.next();
if (!end.add(UnsignedInteger.ONE).equals(deliveryId)) {
updateDisposition(role, begin, end, state, settled);
begin = deliveryId;
end = begin;
} else {
end = deliveryId;
}
}
updateDisposition(role, begin, end, state, settled);
}
}
use of org.apache.qpid.server.protocol.v1_0.type.transport.Role in project qpid-broker-j by apache.
the class Session_1_0 method updateDisposition.
void updateDisposition(final Role role, final Binary deliveryTag, final DeliveryState state, final boolean settled) {
final DeliveryRegistry deliveryRegistry = role == Role.RECEIVER ? _incomingDeliveryRegistry : _outgoingDeliveryRegistry;
UnsignedInteger deliveryId = deliveryRegistry.getDeliveryIdByTag(deliveryTag);
if (deliveryId == null) {
throw new ConnectionScopedRuntimeException(String.format("Delivery with tag '%s' is not found in unsettled deliveries", deliveryTag));
}
updateDisposition(role, deliveryId, deliveryId, state, settled);
}
use of org.apache.qpid.server.protocol.v1_0.type.transport.Role in project qpid-broker-j by apache.
the class LinkKeyEntryBinding method entryToObject.
@Override
public LinkKey entryToObject(final TupleInput input) {
String remoteContainerId = input.readString();
String linkName = input.readString();
Role role = null;
try {
role = Role.valueOf(input.readBoolean());
} catch (IllegalArgumentException e) {
throw new StoreException("Cannot load link from store", e);
}
final String remoteContainerId1 = remoteContainerId;
final String linkName1 = linkName;
final Role role1 = role;
return new LinkKey(remoteContainerId1, linkName1, role1);
}
use of org.apache.qpid.server.protocol.v1_0.type.transport.Role in project qpid-broker-j by apache.
the class JDBCLinkStore method getLinks.
private Collection<LinkDefinition<Source, Target>> getLinks() throws SQLException {
Collection<LinkDefinition<Source, Target>> links = new ArrayList<>();
try (Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(String.format("SELECT remote_container_id, link_name, link_role, source, target FROM %s", getLinksTableName()))) {
while (resultSet.next()) {
String remoteContainerId = getBlobValueAsString(resultSet, 1);
String linkName = getBlobValueAsString(resultSet, 2);
Role role = Role.valueOf(resultSet.getBoolean(3));
Source source = (Source) getBlobAsAmqpObject(resultSet, 4);
Target target = (Target) getBlobAsAmqpObject(resultSet, 5);
links.add(new LinkDefinitionImpl<>(remoteContainerId, linkName, role, source, target));
}
} catch (IllegalArgumentException e) {
throw new StoreException("Cannot load links from store", e);
}
return links;
}
use of org.apache.qpid.server.protocol.v1_0.type.transport.Role in project qpid-broker-j by apache.
the class Session_1_0 method receiveDisposition.
public void receiveDisposition(final Disposition disposition) {
Role dispositionRole = disposition.getRole();
DeliveryRegistry unsettledDeliveries;
if (dispositionRole == Role.RECEIVER) {
unsettledDeliveries = _outgoingDeliveryRegistry;
} else {
unsettledDeliveries = _incomingDeliveryRegistry;
}
SequenceNumber deliveryId = new SequenceNumber(disposition.getFirst().intValue());
SequenceNumber last;
if (disposition.getLast() == null) {
last = new SequenceNumber(deliveryId.intValue());
} else {
last = new SequenceNumber(disposition.getLast().intValue());
}
while (deliveryId.compareTo(last) <= 0) {
UnsignedInteger deliveryIdUnsigned = UnsignedInteger.valueOf(deliveryId.intValue());
UnsettledDelivery unsettledDelivery = unsettledDeliveries.getDelivery(deliveryIdUnsigned);
if (unsettledDelivery != null) {
LinkEndpoint<?, ?> linkEndpoint = unsettledDelivery.getLinkEndpoint();
linkEndpoint.receiveDeliveryState(unsettledDelivery.getDeliveryTag(), disposition.getState(), disposition.getSettled());
if (Boolean.TRUE.equals(disposition.getSettled())) {
unsettledDeliveries.removeDelivery(deliveryIdUnsigned);
}
}
deliveryId.incr();
}
}
Aggregations