All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gemstone.gemfire.internal.cache.ha.HARegionQueueStats Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * 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. See accompanying
 * LICENSE file.
 */
package com.gemstone.gemfire.internal.cache.ha;

import com.gemstone.gemfire.StatisticDescriptor;
import com.gemstone.gemfire.Statistics;
import com.gemstone.gemfire.StatisticsFactory;
import com.gemstone.gemfire.StatisticsType;
import com.gemstone.gemfire.StatisticsTypeFactory;
import com.gemstone.gemfire.internal.StatisticsTypeFactoryImpl;

/**
 * This class tracks GemFire statistics related to a {@link HARegionQueue}.
 * 
 * @author Dinesh Patel
 *  
 */
public class HARegionQueueStats
  {
  /** The StatisticsType of the statistics */
  private static final StatisticsType _type;

  /** Name of the events queued statistic */
  protected static final String EVENTS_QUEUED = "eventsQueued";

  /** Name of the events conflated statistic */
  protected static final String EVENTS_CONFLATED = "eventsConflated";
  
  /** Name of the marker events conflated statistic */
  protected static final String MARKER_EVENTS_CONFLATED = "markerEventsConflated";

  /** Name of the events removed statistic */
  protected static final String EVENTS_REMOVED = "eventsRemoved";

  /** Name of the events taken statistic */
  protected static final String EVENTS_TAKEN = "eventsTaken";

  /** Name of the events expired statistic */
  protected static final String EVENTS_EXPIRED = "eventsExpired";

  /** Name of the events removed by QRM statistic */
  protected static final String EVENTS_REMOVED_BY_QRM = "eventsRemovedByQrm";

  /** Name of the thread identifiers statistic */
  protected static final String THREAD_IDENTIFIERS = "threadIdentifiers";

  /** Name of the events dispatched statistic */
  protected static final String EVENTS_DISPATCHED = "eventsDispatched";
  
  /**
   * Name of the num void removals statistic. This refers to the events which
   * were supposed to be destroyed from queue through remove() but were removed
   * by some other operation like conflation or expiration.
   */
  protected static final String NUM_VOID_REMOVALS = "numVoidRemovals";

  /**
   * Name of the number of sequence violated events statistic. This refers to
   * the events which has sequence id less than lastSequnceId hence not put in
   * the region queue
   */
  protected static final String NUM_SEQUENCE_VIOLATED = "numSequenceViolated";
  
  /** Id of the events queued statistic */
  private static final int _eventsQueuedId;

  /** Id of the events conflated statistic */
  private static final int _eventsConflatedId;
  
  /** Id of the marker events conflated statistic */
  private static final int _markerEventsConflatedId;

  /** Id of the events removed statistic */
  private static final int _eventsRemovedId;

  /** Id of the events taken statistic */
  private static final int _eventsTakenId;

  /** Id of the events expired statistic */
  private static final int _eventsExpiredId;

  /** Id of the events removed by qrm statistic */
  private static final int _eventsRemovedByQrmId;

  /** Id of the thread identifiers statistic */
  private static final int _threadIdentifiersId;
  
  /** Id of the num events dispatched statistic */
  private static final int _eventsDispatched;

  /** Id of the num void removal statistic */
  private static final int _numVoidRemovals;

  /** Id of the num sequence violated statistic */
  private static final int _numSequenceViolated;
  
  /**
   * Static initializer to create and initialize the StatisticsType
   */
  static {
    String statName = "ClientSubscriptionStats";

    StatisticsTypeFactory f = StatisticsTypeFactoryImpl.singleton();

    _type = f.createType(statName, statName, new StatisticDescriptor[] {
        f.createLongCounter(EVENTS_QUEUED, "Number of events added to queue.",
            "operations"),

        f.createLongCounter(EVENTS_CONFLATED,
            "Number of events conflated for the queue.", "operations"),
            
        f.createLongCounter(MARKER_EVENTS_CONFLATED,
            "Number of marker events conflated for the queue.", "operations"),

        f.createLongCounter(EVENTS_REMOVED,
            "Number of events removed from the queue.", "operations"),

        f.createLongCounter(EVENTS_TAKEN,
            "Number of events taken from the queue.", "operations"),

        f.createLongCounter(EVENTS_EXPIRED,
            "Number of events expired from the queue.", "operations"),

        f.createLongCounter(EVENTS_REMOVED_BY_QRM,
            "Number of events removed by QRM message.", "operations"),

        f.createIntCounter(THREAD_IDENTIFIERS,
            "Number of ThreadIdenfier objects for the queue.", "units"),

        f.createLongCounter(EVENTS_DISPATCHED,
            "Number of events that have been dispatched.", "operations"),
                    
        f.createLongCounter(NUM_VOID_REMOVALS,
            "Number of void removals from the queue.", "operations"),

        f.createLongCounter(NUM_SEQUENCE_VIOLATED,
            "Number of events that has violated sequence.", "operations")            
    });

    // Initialize id fields
    _eventsQueuedId = _type.nameToId(EVENTS_QUEUED);
    _eventsConflatedId = _type.nameToId(EVENTS_CONFLATED);
    _markerEventsConflatedId = _type.nameToId(MARKER_EVENTS_CONFLATED);
    _eventsRemovedId = _type.nameToId(EVENTS_REMOVED);
    _eventsTakenId = _type.nameToId(EVENTS_TAKEN);
    _eventsExpiredId = _type.nameToId(EVENTS_EXPIRED);
    _eventsRemovedByQrmId = _type.nameToId(EVENTS_REMOVED_BY_QRM);
    _threadIdentifiersId = _type.nameToId(THREAD_IDENTIFIERS);
    _eventsDispatched = _type.nameToId(EVENTS_DISPATCHED);
    _numVoidRemovals = _type.nameToId(NUM_VOID_REMOVALS);
    _numSequenceViolated = _type.nameToId(NUM_SEQUENCE_VIOLATED);
  }

  /** The Statistics instance to which most behavior is delegated */
  private final Statistics _stats;

  /**
   * Constructor.
   * 
   * @param factory
   *          The StatisticsFactory which creates the
   *          Statistics instance
   * @param name
   *          The name of the Statistics
   */
  public HARegionQueueStats(StatisticsFactory factory, String name) {
    this._stats = factory.createAtomicStatistics(_type, "ClientSubscriptionStats-"
        + name);
  }

  // /////////////////// Instance Methods /////////////////////

  /**
   * Closes the HARegionQueueStats.
   */
  public void close()
  {
    this._stats.close();
  }

  /**
   * Returns the current value of the "eventsQueued" stat.
   * 
   * @return the current value of the "eventsQueued" stat
   */
  public long getEventsEnqued()
  {
    return this._stats.getLong(_eventsQueuedId);
  }

  /**
   * Increments the "eventsQueued" stat by 1.
   */
  public void incEventsEnqued()
  {
    this._stats.incLong(_eventsQueuedId, 1);
  }

  /**
   * Returns the current value of the "eventsConflated" stat.
   * 
   * @return the current value of the "eventsConflated" stat
   */
  public long getEventsConflated()
  {
    return this._stats.getLong(_eventsConflatedId);
  }

  /**
   * Increments the "eventsConflated" stat by 1.
   */
  public void incEventsConflated()
  {
    this._stats.incLong(_eventsConflatedId, 1);
  }
  
  /**
   * Returns the current value of the "markerEventsConflated" stat.
   * 
   * @return the current value of the "markerEventsConflated" stat 
   */
  public long getMarkerEventsConflated() 
  {
    return this._stats.getLong(_markerEventsConflatedId);
  }

  /**
   * Increments the "markerEventsConflated" stat by 1.
   */
  public void incMarkerEventsConflated() 
  {
    this._stats.incLong(_markerEventsConflatedId, 1);
  }

  /**
   * Returns the current value of the "eventsRemoved" stat.
   * 
   * @return the current value of the "eventsRemoved" stat
   */
  public long getEventsRemoved()
  {
    return this._stats.getLong(_eventsRemovedId);
  }

  /**
   * Increments the "eventsRemoved" stat by 1.
   */
  public void incEventsRemoved()
  {
    this._stats.incLong(_eventsRemovedId, 1);
  }

  /**
   * Returns the current value of the "eventsTaken" stat.
   * 
   * @return the current value of the "eventsTaken" stat
   */
  public long getEventsTaken()
  {
    return this._stats.getLong(_eventsTakenId);
  }

  /**
   * Increments the "eventsTaken" stat by 1.
   */
  public void incEventsTaken()
  {
    this._stats.incLong(_eventsTakenId, 1);
  }

  /**
   * Returns the current value of the "eventsExpired" stat.
   * 
   * @return the current value of the "eventsExpired" stat
   */
  public long getEventsExpired()
  {
    return this._stats.getLong(_eventsExpiredId);
  }

  /**
   * Increments the "eventsExpired" stat by 1.
   */
  public void incEventsExpired()
  {
    this._stats.incLong(_eventsExpiredId, 1);
  }

  /**
   * Returns the current value of the "eventsRemovedByQrm" stat.
   * 
   * @return the current value of the "eventsRemovedByQrm" stat
   */
  public long getEventsRemovedByQrm()
  {
    return this._stats.getLong(_eventsRemovedByQrmId);
  }

  /**
   * Increments the "eventsRemovedByQrm" stat by 1.
   */
  public void incEventsRemovedByQrm()
  {
    this._stats.incLong(_eventsRemovedByQrmId, 1);
  }

  /**
   * Returns the current value of the "threadIdentifiers" stat.
   * 
   * @return the current value of the "threadIdentifiers" stat
   */
  public int getThreadIdentiferCount()
  {
    return this._stats.getInt(_threadIdentifiersId);
  }

  /**
   * Increments the "threadIdentifiers" stat by 1.
   */
  public void incThreadIdentifiers()
  {
    this._stats.incInt(_threadIdentifiersId, 1);
  }

  /**
   * Returns the current value of the "eventsDispatched" stat.
   * 
   * @return the current value of the "eventsDispatched" stat
   */
  public long getEventsDispatched()
  {
    return this._stats.getLong(_eventsDispatched);
  }

  /**
   * Increments the "eventsDispatched" stat by 1.
   */
  public void incEventsDispatched()
  {
    this._stats.incLong(_eventsDispatched, 1);
  }

  /**
   * Returns the current value of the "numVoidRemovals" stat.
   * 
   * @return the current value of the "numVoidRemovals" stat
   */
  public long getNumVoidRemovals()
  {
    return this._stats.getLong(_numVoidRemovals);
  }

  /**
   * Increments the "numVoidRemovals" stat by 1.
   */
  public void incNumVoidRemovals()
  {
    this._stats.incLong(_numVoidRemovals, 1);
  }

  /**
   * Returns the current value of the "numSequenceViolated" stat.
   * 
   * @return the current value of the "numSequenceViolated" stat
   */
  public long getNumSequenceViolated()
  {
    return this._stats.getLong(_numSequenceViolated);
  }

  /**
   * Increments the "numSequenceViolated" stat by 1.
   */
  public void incNumSequenceViolated()
  {
    this._stats.incLong(_numSequenceViolated, 1);
  }
  
  /**
   * Returns true if the stats instance has been closed.
   * 
   * @return true if the stats instance has been closed.
   */
  public boolean isClosed()
  {
    return this._stats.isClosed();
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy