package context.arch.comm.language;

import java.io.Reader;
import context.arch.comm.DataObject;

/**
 * This interface specifies all the methods an DecoderInterface object must support.  This
 * allows the details of the decoding to be abstracted away.
 */
public interface DecoderInterface {

  /** 
   * Method to decode the incoming data
   *
   * @param message Message to be decoded
   * @return the decoded message in a DataObject
   * @exception context.arch.comm.language.DecodeException thrown when the given
   *		data can not be decoded successfully
   */
  public abstract DataObject decodeData(Reader message) throws DecodeException;

  /** 
   * Method to get the class being used for decoding
   *
   * @return the class used for decoding
   */
  public abstract String getClassName();

  /** 
   * Method to get the language being used for decoding
   *
   * @return the language used for decoding
   */
  public abstract String getLanguage();

}
