Example usage for com.rabbitmq.client BlockedListener handleUnblocked

List of usage examples for com.rabbitmq.client BlockedListener handleUnblocked

Introduction

In this page you can find the example usage for com.rabbitmq.client BlockedListener handleUnblocked.

Prototype

void handleUnblocked() throws IOException;

Source Link

Usage

From source file:de.htwk_leipzig.bis.connection.handshake.clientRewrite.Copyright.java

License:Mozilla Public License

/**
 * Handles incoming control commands on channel zero.
 * /*from  w  w  w .j av a  2  s.  c o m*/
 * @see ChannelN#processAsync
 */
@SuppressWarnings("unused")
public boolean processControlCommand(Command c) throws IOException {
    // Similar trick to ChannelN.processAsync used here, except
    // we're interested in whole-connection quiescing.

    // See the detailed comments in ChannelN.processAsync.

    Method method = c.getMethod();

    if (isOpen()) {
        if (method instanceof AMQP.Connection.Close) {
            handleConnectionClose(c);
            return true;
        } else if (method instanceof AMQP.Connection.Blocked) {
            AMQP.Connection.Blocked blocked = (AMQP.Connection.Blocked) method;
            try {
                for (BlockedListener l : this.blockedListeners) {
                    l.handleBlocked(blocked.getReason());
                }
            } catch (Throwable ex) {
                getExceptionHandler().handleBlockedListenerException(this, ex);
            }
            return true;
        } else if (method instanceof AMQP.Connection.Unblocked) {
            try {
                for (BlockedListener l : this.blockedListeners) {
                    l.handleUnblocked();
                }
            } catch (Throwable ex) {
                getExceptionHandler().handleBlockedListenerException(this, ex);
            }
            return true;
        } else {
            return false;
        }
    } else {
        if (method instanceof AMQP.Connection.Close) {
            // Already shutting down, so just send back a CloseOk.
            try {
                _channel0.quiescingTransmit(new AMQP.Connection.CloseOk.Builder().build());
            } catch (IOException _e) {
            } // ignore
            return true;
        } else if (method instanceof AMQP.Connection.CloseOk) {
            // It's our final "RPC". Time to shut down.
            _running = false;
            // If Close was sent from within the MainLoop we
            // will not have a continuation to return to, so
            // we treat this as processed in that case.
            return !_channel0.isOutstandingRpc();
        } else { // Ignore all others.
            return true;
        }
    }
}