Package net.jodah.lyra.internal

Source Code of net.jodah.lyra.internal.ConsumerDelegate

package net.jodah.lyra.internal;

import java.io.IOException;

import com.rabbitmq.client.AMQP.BasicProperties;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.ShutdownSignalException;

/**
* Delegates consumer method invocations while tracking delivery information.
*
* @author Jonathan Halterman
*/
public class ConsumerDelegate implements Consumer {
  private final ChannelHandler channelHandler;
  final Consumer delegate;
  private volatile boolean closed;

  ConsumerDelegate(ChannelHandler channelHandler, Consumer delegate) {
    this.channelHandler = channelHandler;
    this.delegate = delegate;
  }

  @Override
  public boolean equals(Object other) {
    return delegate.equals(other);
  }

  @Override
  public void handleCancel(String consumerTag) throws IOException {
    delegate.handleCancel(consumerTag);
  }

  @Override
  public void handleCancelOk(String consumerTag) {
    delegate.handleCancelOk(consumerTag);
  }

  @Override
  public void handleConsumeOk(String consumerTag) {
    delegate.handleConsumeOk(consumerTag);
  }

  @Override
  public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,
      byte[] body) throws IOException {
    if (closed)
      return;
    long deliveryTag = envelope.getDeliveryTag();
    channelHandler.maxDeliveryTag = deliveryTag = deliveryTag
        + channelHandler.previousMaxDeliveryTag;
    delegate.handleDelivery(
        consumerTag,
        new Envelope(deliveryTag, envelope.isRedeliver(), envelope.getExchange(),
            envelope.getRoutingKey()), properties, body);
  }

  @Override
  public void handleRecoverOk(String consumerTag) {
    delegate.handleRecoverOk(consumerTag);
  }

  @Override
  public void handleShutdownSignal(String consumerTag, ShutdownSignalException sig) {
    delegate.handleShutdownSignal(consumerTag, sig);
  }

  @Override
  public int hashCode() {
    return delegate.hashCode();
  }

  @Override
  public String toString() {
    return delegate.toString();
  }

  void close() {
    closed = true;
  }

  void open() {
    closed = false;
  }
}
TOP

Related Classes of net.jodah.lyra.internal.ConsumerDelegate

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.