Search in sources :

Example 46 with Error

use of org.apache.qpid.server.protocol.v1_0.type.transport.Error in project qpid-broker-j by apache.

the class Session_1_0 method receiveEnd.

public void receiveEnd(final End end) {
    receivedComplete();
    switch(_sessionState) {
        case END_SENT:
            remoteEnd(end);
            _sessionState = SessionState.ENDED;
            break;
        case ACTIVE:
            _sessionState = SessionState.END_RECVD;
            detachLinks();
            remoteEnd(end);
            _connection.sendEnd(_sendingChannel, new End(), true);
            _sessionState = SessionState.ENDED;
            break;
        default:
            End reply = new End();
            Error error = new Error();
            error.setCondition(AmqpError.ILLEGAL_STATE);
            error.setDescription("END called on Session which has not been opened");
            reply.setError(error);
            _connection.sendEnd(_sendingChannel, reply, true);
            break;
    }
}
Also used : Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) AmqpError(org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError) SessionError(org.apache.qpid.server.protocol.v1_0.type.transport.SessionError) LinkError(org.apache.qpid.server.protocol.v1_0.type.transport.LinkError) End(org.apache.qpid.server.protocol.v1_0.type.transport.End)

Example 47 with Error

use of org.apache.qpid.server.protocol.v1_0.type.transport.Error in project qpid-broker-j by apache.

the class Session_1_0 method close.

public void close(ErrorCondition condition, String message) {
    performCloseTasks();
    final End end = new End();
    final Error theError = new Error();
    theError.setDescription(message);
    theError.setCondition(condition);
    end.setError(theError);
    end(end);
}
Also used : Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) AmqpError(org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError) SessionError(org.apache.qpid.server.protocol.v1_0.type.transport.SessionError) LinkError(org.apache.qpid.server.protocol.v1_0.type.transport.LinkError) End(org.apache.qpid.server.protocol.v1_0.type.transport.End)

Example 48 with Error

use of org.apache.qpid.server.protocol.v1_0.type.transport.Error in project qpid-broker-j by apache.

the class Session_1_0 method receiveFlow.

public void receiveFlow(final Flow flow) {
    receivedComplete();
    final SequenceNumber flowNextIncomingId = new SequenceNumber(flow.getNextIncomingId() == null ? _initialOutgoingId.intValue() : flow.getNextIncomingId().intValue());
    if (flowNextIncomingId.compareTo(_nextOutgoingId) > 0) {
        final End end = new End();
        end.setError(new Error(SessionError.WINDOW_VIOLATION, String.format("Next incoming id '%d' exceeds next outgoing id '%d'", flowNextIncomingId.longValue(), _nextOutgoingId.longValue())));
        end(end);
    } else {
        _remoteIncomingWindow = flowNextIncomingId.longValue() + flow.getIncomingWindow().longValue() - _nextOutgoingId.longValue();
        _nextIncomingId = new SequenceNumber(flow.getNextOutgoingId().intValue());
        _remoteOutgoingWindow = flow.getOutgoingWindow();
        UnsignedInteger handle = flow.getHandle();
        if (handle != null) {
            final LinkEndpoint<? extends BaseSource, ? extends BaseTarget> endpoint = _inputHandleToEndpoint.get(handle);
            if (endpoint == null) {
                End end = new End();
                end.setError(new Error(SessionError.UNATTACHED_HANDLE, String.format("Received Flow with unknown handle %d", handle.intValue())));
                end(end);
            } else {
                endpoint.receiveFlow(flow);
            }
        } else {
            final Collection<LinkEndpoint<? extends BaseSource, ? extends BaseTarget>> allLinkEndpoints = _inputHandleToEndpoint.values();
            for (LinkEndpoint<? extends BaseSource, ? extends BaseTarget> le : allLinkEndpoints) {
                le.flowStateChanged();
            }
            if (Boolean.TRUE.equals(flow.getEcho())) {
                sendFlow();
            }
        }
    }
}
Also used : BaseSource(org.apache.qpid.server.protocol.v1_0.type.BaseSource) Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) AmqpError(org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError) SessionError(org.apache.qpid.server.protocol.v1_0.type.transport.SessionError) LinkError(org.apache.qpid.server.protocol.v1_0.type.transport.LinkError) End(org.apache.qpid.server.protocol.v1_0.type.transport.End) UnsignedInteger(org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger) BaseTarget(org.apache.qpid.server.protocol.v1_0.type.BaseTarget)

Example 49 with Error

use of org.apache.qpid.server.protocol.v1_0.type.transport.Error in project qpid-broker-j by apache.

the class Session_1_0 method createExchangeDestination.

private ExchangeSendingDestination createExchangeDestination(final String exchangeName, final String bindingKey, final String linkName, final Source source) throws AmqpErrorException {
    ExchangeSendingDestination exchangeDestination = null;
    Exchange<?> exchange = getExchange(exchangeName);
    if (exchange != null) {
        if (!Boolean.TRUE.equals(source.getDynamic())) {
            String remoteContainerId = getConnection().getRemoteContainerId();
            exchangeDestination = new ExchangeSendingDestination(exchange, linkName, bindingKey, remoteContainerId, source);
            source.setFilter(exchangeDestination.getFilters());
            source.setDistributionMode(StdDistMode.COPY);
        } else {
            // TODO
            throw new AmqpErrorException(new Error(AmqpError.NOT_IMPLEMENTED, "Temporary subscription is not implemented"));
        }
    }
    return exchangeDestination;
}
Also used : AmqpErrorException(org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException) Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) AmqpError(org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError) SessionError(org.apache.qpid.server.protocol.v1_0.type.transport.SessionError) LinkError(org.apache.qpid.server.protocol.v1_0.type.transport.LinkError)

Example 50 with Error

use of org.apache.qpid.server.protocol.v1_0.type.transport.Error in project qpid-broker-j by apache.

the class TxnCoordinatorReceivingLinkEndpoint method discharge.

private Error discharge(Binary transactionIdAsBinary, boolean fail) {
    Error error = null;
    Integer transactionId = null;
    ServerTransaction txn = null;
    try {
        transactionId = Session_1_0.transactionIdToInteger(transactionIdAsBinary);
        txn = _createdTransactions.get(transactionId);
    } catch (UnknownTransactionException | IllegalArgumentException e) {
    // handle error below
    }
    if (txn != null) {
        AMQPConnection_1_0<?> connection = getSession().getConnection();
        if (fail) {
            txn.rollback();
            connection.incrementTransactionRollbackCounter();
        } else if (!(txn instanceof LocalTransaction && ((LocalTransaction) txn).isRollbackOnly())) {
            txn.commit();
        } else {
            txn.rollback();
            connection.incrementTransactionRollbackCounter();
            error = new Error();
            error.setCondition(TransactionError.TRANSACTION_ROLLBACK);
            error.setDescription("The transaction was marked as rollback only due to an earlier issue (e.g. a published message was sent settled but could not be enqueued)");
        }
        _createdTransactions.remove(transactionId);
        connection.unregisterTransactionTickers(txn);
        connection.removeTransaction(transactionId);
        connection.decrementTransactionOpenCounter();
    } else {
        error = new Error();
        error.setCondition(TransactionError.UNKNOWN_ID);
        error.setDescription("Unknown transactionId " + transactionIdAsBinary.toString());
    }
    return error;
}
Also used : UnsignedInteger(org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger) LocalTransaction(org.apache.qpid.server.txn.LocalTransaction) Error(org.apache.qpid.server.protocol.v1_0.type.transport.Error) AmqpError(org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError) TransactionError(org.apache.qpid.server.protocol.v1_0.type.transaction.TransactionError) ServerTransaction(org.apache.qpid.server.txn.ServerTransaction)

Aggregations

Error (org.apache.qpid.server.protocol.v1_0.type.transport.Error)49 AmqpError (org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError)40 SpecificationTest (org.apache.qpid.tests.protocol.SpecificationTest)30 Test (org.junit.Test)30 FrameTransport (org.apache.qpid.tests.protocol.v1_0.FrameTransport)28 TransactionError (org.apache.qpid.server.protocol.v1_0.type.transaction.TransactionError)22 Interaction (org.apache.qpid.tests.protocol.v1_0.Interaction)17 Binary (org.apache.qpid.server.protocol.v1_0.type.Binary)15 UnsignedInteger (org.apache.qpid.server.protocol.v1_0.type.UnsignedInteger)15 Detach (org.apache.qpid.server.protocol.v1_0.type.transport.Detach)15 End (org.apache.qpid.server.protocol.v1_0.type.transport.End)15 Attach (org.apache.qpid.server.protocol.v1_0.type.transport.Attach)14 Close (org.apache.qpid.server.protocol.v1_0.type.transport.Close)14 Disposition (org.apache.qpid.server.protocol.v1_0.type.transport.Disposition)14 Open (org.apache.qpid.server.protocol.v1_0.type.transport.Open)13 Begin (org.apache.qpid.server.protocol.v1_0.type.transport.Begin)12 Flow (org.apache.qpid.server.protocol.v1_0.type.transport.Flow)12 LinkError (org.apache.qpid.server.protocol.v1_0.type.transport.LinkError)12 AmqpErrorException (org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException)11 InetSocketAddress (java.net.InetSocketAddress)10