001/*
002 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved.
003 *
004 * Project and contact information: http://www.cascading.org/
005 *
006 * This file is part of the Cascading project.
007 *
008 * Licensed under the Apache License, Version 2.0 (the "License");
009 * you may not use this file except in compliance with the License.
010 * You may obtain a copy of the License at
011 *
012 *     http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing, software
015 * distributed under the License is distributed on an "AS IS" BASIS,
016 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017 * See the License for the specific language governing permissions and
018 * limitations under the License.
019 */
020
021package cascading.stats;
022
023import java.util.Collection;
024
025/**
026 *
027 */
028public interface ProvidesCounters
029  {
030  /**
031   * Method getLastSuccessfulCounterFetchTime returns the time, in millis, the last moment counters
032   * were successfully retrieved.
033   * <p/>
034   * If -1, counter values were never successfully retrieved.
035   * <p/>
036   * If this return value is less than the {@link CascadingStats#getFinishedTime()} it is likely the
037   * counter service became unavailable.
038   *
039   * @return the moment counters were last successfully retrieved
040   */
041  long getLastSuccessfulCounterFetchTime();
042
043  /**
044   * Method getCounterGroups returns all the available counter group names.
045   *
046   * @return the counterGroups (type Collection<String>) of this CascadingStats object.
047   */
048  Collection<String> getCounterGroups();
049
050  /**
051   * Method getCountersFor returns all the counter names for the give group name.
052   *
053   * @param group
054   * @return Collection<String>
055   */
056  Collection<String> getCountersFor( String group );
057
058  /**
059   * Method getCountersFor returns all the counter names for the counter Enum.
060   *
061   * @param group
062   * @return Collection<String>
063   */
064  Collection<String> getCountersFor( Class<? extends Enum> group );
065
066  /**
067   * Method getCounter returns the current value for the given counter Enum.
068   *
069   * @param counter of type Enum
070   * @return the current counter value
071   */
072  long getCounterValue( Enum counter );
073
074  /**
075   * Method getCounter returns the current value for the given group and counter.
076   *
077   * @param group   of type String
078   * @param counter of type String
079   * @return the current counter value
080   */
081  long getCounterValue( String group, String counter );
082  }