MetricsContext.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /*
  2.  * MetricsContext.java
  3.  *
  4.  * Licensed to the Apache Software Foundation (ASF) under one
  5.  * or more contributor license agreements.  See the NOTICE file
  6.  * distributed with this work for additional information
  7.  * regarding copyright ownership.  The ASF licenses this file
  8.  * to you under the Apache License, Version 2.0 (the
  9.  * "License"); you may not use this file except in compliance
  10.  * with the License.  You may obtain a copy of the License at
  11.  *
  12.  *     http://www.apache.org/licenses/LICENSE-2.0
  13.  *
  14.  * Unless required by applicable law or agreed to in writing, software
  15.  * distributed under the License is distributed on an "AS IS" BASIS,
  16.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17.  * See the License for the specific language governing permissions and
  18.  * limitations under the License.
  19.  */
  20. package org.apache.hadoop.metrics;
  21. import java.io.IOException;
  22. /**
  23.  * The main interface to the metrics package. 
  24.  */
  25. public interface MetricsContext {
  26.     
  27.   /**
  28.    * Default period in seconds at which data is sent to the metrics system.
  29.    */
  30.   public static final int DEFAULT_PERIOD = 5;
  31.   /**
  32.    * Initialize this context.
  33.    * @param contextName The given name for this context
  34.    * @param factory The creator of this context
  35.    */
  36.   public void init(String contextName, ContextFactory factory);
  37.   /**
  38.    * Returns the context name.
  39.    *
  40.    * @return the context name
  41.    */
  42.   public abstract String getContextName();
  43.     
  44.   /**
  45.    * Starts or restarts monitoring, the emitting of metrics records as they are 
  46.    * updated. 
  47.    */
  48.   public abstract void startMonitoring()
  49.     throws IOException;
  50.   /**
  51.    * Stops monitoring.  This does not free any data that the implementation
  52.    * may have buffered for sending at the next timer event. It
  53.    * is OK to call <code>startMonitoring()</code> again after calling 
  54.    * this.
  55.    * @see #close()
  56.    */
  57.   public abstract void stopMonitoring();
  58.     
  59.   /**
  60.    * Returns true if monitoring is currently in progress.
  61.    */
  62.   public abstract boolean isMonitoring();
  63.     
  64.   /**
  65.    * Stops monitoring and also frees any buffered data, returning this 
  66.    * object to its initial state.  
  67.    */
  68.   public abstract void close();
  69.     
  70.   /**
  71.    * Creates a new MetricsRecord instance with the given <code>recordName</code>.
  72.    * Throws an exception if the metrics implementation is configured with a fixed
  73.    * set of record names and <code>recordName</code> is not in that set.
  74.    *
  75.    * @param recordName the name of the record
  76.    * @throws MetricsException if recordName conflicts with configuration data
  77.    */
  78.   public abstract MetricsRecord createRecord(String recordName);
  79.     
  80.   /**
  81.    * Registers a callback to be called at regular time intervals, as 
  82.    * determined by the implementation-class specific configuration.
  83.    *
  84.    * @param updater object to be run periodically; it should updated
  85.    * some metrics records and then return
  86.    */
  87.   public abstract void registerUpdater(Updater updater);
  88.   /**
  89.    * Removes a callback, if it exists.
  90.    * 
  91.    * @param updater object to be removed from the callback list
  92.    */
  93.   public abstract void unregisterUpdater(Updater updater);
  94.   
  95.   /**
  96.    * Returns the timer period.
  97.    */
  98.   public abstract int getPeriod();
  99.     
  100. }