package jp.cssj.cti.helpers;

import java.io.IOException;

/**
 * クライアントからサーバーへリクエストを送るためのインターフェースです。
 * 
 * @author <a href="mailto:miyabe at gnn.co.jp">MIYABE Tatsuhiko </a>
 * @version $Id: RequestConsumer.java,v 1.1 2005/03/26 10:22:30 harumanx Exp $
 */
public interface RequestConsumer {
	/**
	 * プロパティを送ります。
	 * 
	 * @param name
	 *            プロパティ名。
	 * @param value
	 *            値。
	 * @throws IOException
	 */
	public void property(String name, String value) throws IOException;

	/**
	 * リソースの開始を通知します。
	 * 
	 * @param uri
	 *            仮想URI。
	 * @param mimeType
	 *            MIME型。
	 * @param encoding
	 *            キャラクタ・エンコーディング。
	 * @throws IOException
	 */
	public void resource(String uri, String mimeType, String encoding)
			throws IOException;

	/**
	 * 本体の開始を通知します。
	 * 
	 * @param uri
	 *            仮想URI。
	 * @param mimeType
	 *            MIME型。
	 * @param encoding
	 *            キャラクタ・エンコーディング。
	 * @throws IOException
	 */
	public void main(String uri, String mimeType, String encoding)
			throws IOException;

	/**
	 * データパケットを送ります。
	 * 
	 * @param b
	 *            バイト列バッファ。
	 * @param off
	 *            データの開始位置。
	 * @param len
	 *            データの長さ。
	 * @throws IOException
	 */
	public void write(byte[] b, int off, int len) throws IOException;

	/**
	 * 終了パケットを送ります。
	 * 
	 * @throws IOException
	 */
	public void end() throws IOException;
}