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