/*
 * Fichero:     SoporteMensajesSOAP.java
 * Fecha:       20/10/06
 * Autor:       Alvaro Sarmiento Losada
 * Asignatura:  Proyecto Fin de Carrera
 * Descripción: Contiene la interfaz SoporteMensajesSOAP, que define el 
 *              comportamiento de una clase cpaz de enviar objetos definidos
 *              en MensajeSOAP.
 *
 * Este fichero pertenece al proyecto fin de carrera del autor,
 * consistente en el estudio de JXTA y su aplicación al comercio 
 * electrónico b2b.
 */
package com.pfc.lib.soap;

import java.io.InputStream;

/**
 * Define la interfaz de la clase que actuará como soporte de comunicaciones
 * para el envío y recepción de mensajes {@link MensajeSOAP}.
 * La clase que implemente esta interfaz deberá proporcionar una 
 * implementación específica y completa del envío y recepción de mensajes 
 * mediante  un protocolo determinado. Si no toma en consideración los 
 * errores, debe informar mediante el lanzamiento de una excepción, 
 * generalmente adecuada al tipo de protocolo manejado, pero puede ser
 * también genérica. <br>
 * Ejemplos de soportes que deben implementar esta interfaz son: TCP/IP, 
 * peertopeer, HTTP, etc. 
 *
 * @author  Alvaro Sarmiento Losada
 * @see     MensajeSOAP
 */
public interface SoporteMensajesSOAP {
    
    /**
     * Envia el flujo de datos especificado.
     *
     * @param mensaje el flujo de datos que se quiere enviar.
     * @throws Exception si no se tratan los errores en el soporte, se 
     *                   puede lanzar cualquier tipo de excepción.
     */
    public void enviar(InputStream mensaje) throws Exception;
    
    /**
     * Recibe un flujo de datos.
     *
     * @return el flujo de datos recibido.
     * @throws Exception si no se tratan los errores en el soporte, se 
     *                   puede lanzar cualquier tipo de excepción.
     */
    public InputStream recibir() throws Exception;
    
}