Package com.carrotgarden.nexus.aws.s3.publish.metrics

Source Code of com.carrotgarden.nexus.aws.s3.publish.metrics.PeekQueueGuage

/**
* Copyright (C) 2010-2012 Andrei Pozolotin <Andrei.Pozolotin@gmail.com>
*
* All rights reserved. Licensed under the OSI BSD License.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package com.carrotgarden.nexus.aws.s3.publish.metrics;

import org.apache.commons.collections.buffer.CircularFifoBuffer;

import com.yammer.metrics.core.Gauge;

/** inverse gauge */
public class PeekQueueGuage extends Gauge<String> implements Clearable {

  private final int size;
  private final CircularFifoBuffer buffer;

  public void add(final Object item) {
    buffer.add(item);
  }

  public PeekQueueGuage() {
    this(10);
  }

  public PeekQueueGuage(final int size) {
    this.size = size;
    this.buffer = new CircularFifoBuffer(size);
  }

  @Override
  public void clear() {
    buffer.clear();
  }

  @Override
  public String value() {

    final StringBuilder text = new StringBuilder(128);

    if (buffer.isEmpty()) {
      text.append("empty queue");
    } else {
      text.append("last ");
      text.append(size);
      text.append("\n");
      for (final Object item : buffer) {
        text.append(item);
        text.append("\n");
      }
    }

    return text.toString();

  }

}
TOP

Related Classes of com.carrotgarden.nexus.aws.s3.publish.metrics.PeekQueueGuage

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.