Search in sources :

Example 6 with Role

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);
    }
}
Also used : UnsignedInteger(org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger) DeliveryRegistry(org.apache.qpid.server.protocol.v1_0.delivery.DeliveryRegistry)

Example 7 with Role

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);
}
Also used : ConnectionScopedRuntimeException(org.apache.qpid.server.util.ConnectionScopedRuntimeException) UnsignedInteger(org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger) DeliveryRegistry(org.apache.qpid.server.protocol.v1_0.delivery.DeliveryRegistry)

Example 8 with Role

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);
}
Also used : Role(org.apache.qpid.server.protocol.v1_0.type.transport.Role) LinkKey(org.apache.qpid.server.protocol.v1_0.LinkKey) StoreException(org.apache.qpid.server.store.StoreException)

Example 9 with Role

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;
}
Also used : PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) BaseSource(org.apache.qpid.server.protocol.v1_0.type.BaseSource) Source(org.apache.qpid.server.protocol.v1_0.type.messaging.Source) StoreException(org.apache.qpid.server.store.StoreException) Role(org.apache.qpid.server.protocol.v1_0.type.transport.Role) LinkDefinition(org.apache.qpid.server.protocol.v1_0.LinkDefinition) Target(org.apache.qpid.server.protocol.v1_0.type.messaging.Target) BaseTarget(org.apache.qpid.server.protocol.v1_0.type.BaseTarget) ResultSet(java.sql.ResultSet)

Example 10 with Role

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();
    }
}
Also used : Role(org.apache.qpid.server.protocol.v1_0.type.transport.Role) UnsettledDelivery(org.apache.qpid.server.protocol.v1_0.delivery.UnsettledDelivery) UnsignedInteger(org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger) DeliveryRegistry(org.apache.qpid.server.protocol.v1_0.delivery.DeliveryRegistry)

Aggregations

Attach (org.apache.qpid.server.protocol.v1_0.type.transport.Attach)5 DeliveryRegistry (org.apache.qpid.server.protocol.v1_0.delivery.DeliveryRegistry)4 UnsignedInteger (org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger)4 Role (org.apache.qpid.server.protocol.v1_0.type.transport.Role)4 FrameBody (org.apache.qpid.server.protocol.v1_0.type.FrameBody)3 Source (org.apache.qpid.server.protocol.v1_0.type.messaging.Source)3 Queue (org.apache.qpid.server.model.Queue)2 Target (org.apache.qpid.server.protocol.v1_0.type.messaging.Target)2 StoreException (org.apache.qpid.server.store.StoreException)2 Test (org.junit.Test)2 Connection (java.sql.Connection)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 Statement (java.sql.Statement)1 ArrayList (java.util.ArrayList)1 Binding (org.apache.qpid.server.model.Binding)1 LinkDefinition (org.apache.qpid.server.protocol.v1_0.LinkDefinition)1 LinkKey (org.apache.qpid.server.protocol.v1_0.LinkKey)1 UnsettledDelivery (org.apache.qpid.server.protocol.v1_0.delivery.UnsettledDelivery)1 BaseSource (org.apache.qpid.server.protocol.v1_0.type.BaseSource)1