content: package com.aliyun.odps.exec;
  
  import com.aliyun.odps.counter.Counter;
  
  /**
   *
   */
  public interface Reporter {
  
    /**
     * Set the status description for the task.
     *
     * @param status brief description of the current status.
     */
    void setStatus(String status);
  
    /**
     * Get the {@link Counter} of the given group with the given name.
     *
     * @param name counter name
     * @return the <code>Counter</code> of the given group/name.
     */
    Counter getCounter(Enum<?> name);
  
    /**
     * Get the {@link Counter} of the given group with the given name.
     *
     * @param group counter group
     * @param name counter name
     * @return the <code>Counter</code> of the given group/name.
     */
    Counter getCounter(String group, String name);
  
    /**
     * Increments the counter identified by the key, which can be of
     * any {@link Enum} type, by the specified amount.
     *
     * @param key key to identify the counter to be incremented. The key can be
     *            be any <code>Enum</code>.
     * @param amount A non-negative amount by which the counter is to
     *               be incremented.
     */
    void incrCounter(Enum<?> key, long amount);
  
    /**
     * Increments the counter identified by the group and counter name
     * by the specified amount.
     *
     * @param group name to identify the group of the counter to be incremented.
     * @param counter name to identify the counter within the group.
     * @param amount A non-negative amount by which the counter is to
     *               be incremented.
     */
    void incrCounter(String group, String counter, long amount);
  
    /**
     * Get the {@link InputSplit} object for a map.
     *
     * @return the <code>InputSplit</code> that the map is reading from.
     * @throws UnsupportedOperationException if called outside a mapper
     */
    InputSplit getInputSplit()
            throws UnsupportedOperationException;
  
    /**
     * Get the progress of the task. Progress is represented as a number between
     * 0 and 1 (inclusive).
     */
    float getProgress();
  
    /**
     * Report progress to the framework.
     */
    public void progress();
  }
  