com.comcast.viper.flume2storm.connection.receptor.EventReceptorStats.java Source code

Java tutorial

Introduction

Here is the source code for com.comcast.viper.flume2storm.connection.receptor.EventReceptorStats.java

Source

/**
 * Copyright 2014 Comcast Cable Communications Management, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.comcast.viper.flume2storm.connection.receptor;

import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.comcast.viper.flume2storm.connection.sender.EventSender;

/**
 * Statistics related to the {@link EventReceptor}. This class is thread-safe.
 */
public final class EventReceptorStats implements EventReceptorStatsMBean {
    protected final String eventSenderId;
    protected final AtomicBoolean isConnected;
    protected final AtomicLong nbEventsIn;
    protected final AtomicLong nbEventsQueued;

    /**
     * Default constructor
     * 
     * @param eventSenderId
     *          The {@link EventSender} identifier
     */
    public EventReceptorStats(String eventSenderId) {
        this.eventSenderId = eventSenderId;
        isConnected = new AtomicBoolean(false);
        nbEventsIn = new AtomicLong();
        nbEventsQueued = new AtomicLong();
    }

    /**
     * @see com.comcast.viper.flume2storm.connection.receptor.EventReceptorStatsMBean#getEventSenderId()
     */
    @Override
    public String getEventSenderId() {
        return eventSenderId;
    }

    /**
     * @see com.comcast.viper.flume2storm.connection.receptor.EventReceptorStatsMBean#reset()
     */
    @Override
    public final EventReceptorStats reset() {
        isConnected.set(false);
        nbEventsIn.set(0);
        nbEventsQueued.set(0);
        return this;
    }

    /**
     * @see com.comcast.viper.flume2storm.connection.receptor.EventReceptorStatsMBean#isConnected()
     */
    @Override
    public final boolean isConnected() {
        return isConnected.get();
    }

    /**
     * See {@link #isConnected()}
     * 
     * @return This object
     */
    public final EventReceptorStats setConnected() {
        isConnected.set(true);
        return this;
    }

    /**
     * See {@link #isConnected()}
     * 
     * @return This object
     */
    public final EventReceptorStats setDisconnected() {
        isConnected.set(false);
        return this;
    }

    /**
     * @see com.comcast.viper.flume2storm.connection.receptor.EventReceptorStatsMBean#getNbEventsIn()
     */
    @Override
    public final long getNbEventsIn() {
        return nbEventsIn.get();
    }

    /**
     * See {@link #getNbEventsIn()}
     * 
     * @return This object
     */
    public final EventReceptorStats incrEventsIn() {
        return incrEventsIn(1);
    }

    /**
     * See {@link #getNbEventsIn()}
     * 
     * @param i
     *          The number of events to increment
     * 
     * @return This object
     */
    public final EventReceptorStats incrEventsIn(final int i) {
        nbEventsIn.addAndGet(i);
        return this;
    }

    /**
     * @see com.comcast.viper.flume2storm.connection.receptor.EventReceptorStatsMBean#getNbEventsQueued()
     */
    @Override
    public final long getNbEventsQueued() {
        return nbEventsQueued.get();
    }

    /**
     * See {@link #getNbEventsQueued()}
     * 
     * @param i
     *          The number of events to set the queue to
     * @return This object
     */
    public final EventReceptorStats setEventsQueued(final int i) {
        nbEventsQueued.set(i);
        return this;
    }

    /**
     * See {@link #getNbEventsQueued()}
     * 
     * @return This object
     */
    public final EventReceptorStats incrEventsQueued() {
        return incrEventsQueued(1);
    }

    /**
     * See {@link #getNbEventsQueued()}
     * 
     * @return This object
     */
    public final EventReceptorStats decrEventsQueued() {
        return incrEventsQueued(-1);
    }

    /**
     * See {@link #getNbEventsQueued()}
     * 
     * @param i
     *          The number of events to increment
     * 
     * @return This object
     */
    public final EventReceptorStats incrEventsQueued(final int i) {
        nbEventsQueued.addAndGet(i);
        return this;
    }

    /**
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(isConnected).append(nbEventsIn).append(nbEventsQueued).hashCode();
    }

    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        EventReceptorStats other = (EventReceptorStats) obj;
        return new EqualsBuilder().append(this.isConnected(), other.isConnected())
                .append(this.getNbEventsIn(), other.getNbEventsIn())
                .append(this.getNbEventsQueued(), other.getNbEventsQueued()).isEquals();
    }

    /**
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("isConnected", isConnected())
                .append("NbEventsIn", getNbEventsIn()).append("NbEventsQueued", getNbEventsQueued()).toString();
    }
}