/****************************************************************************/
/* $Id$             */
/*                                                                          */
/*   (c) 2009  Universite de Rennes 1                                       */
/*                                                                          */
/* Contributors:                                                            */
/*  - Anthony BAIRE                                                         */
/*                                                                          */
/* Contact address: <t3devkit@irisa.fr>                                     */
/*                                                                          */
/*                                                                          */
/* This file is part of application examples provided along with T3DevKit,  */
/* a free toolkit for building TTCN-3 tests.                                */
/*                                                                          */
/* This software is governed by the CeCILL-B license under French law and   */
/* abiding by the rules of distribution of free software.  You can  use,    */
/* modify and/or redistribute the software under the terms of the CeCILL-B  */
/* license as circulated by CEA, CNRS and INRIA at the following URL        */
/* "http://www.cecill.info".                                                */
/*                                                                          */
/* As a counterpart to the access to the source code and  rights to copy,   */
/* modify and redistribute granted by the license, users are provided only  */
/* with a limited warranty  and the software's author,  the holder of the   */
/* economic rights,  and the successive licensors  have only  limited       */
/* liability.                                                               */
/*                                                                          */
/* In this respect, the user's attention is drawn to the risks associated   */
/* with loading,  using,  modifying and/or developing or reproducing the    */
/* software by the user in light of its specific status of free software,   */
/* that may mean  that it is complicated to manipulate,  and  that  also    */
/* therefore means  that it is reserved for developers  and  experienced    */
/* professionals having in-depth computer knowledge. Users are therefore    */
/* encouraged to load and test the software's suitability as regards their  */
/* requirements in conditions enabling the security of their systems and/or */ 
/* data to be ensured and,  more generally, to use and operate it in the    */
/* same conditions as regards security.                                     */
/*                                                                          */
/* The fact that you are presently reading this means that you have had     */
/* knowledge of the CeCILL-B license and that you accept its terms.         */
/****************************************************************************/
#ifndef EchoPort_h
#define EchoPort_h

#include <t3devlib/t3devlib.h>

/** Implementation of an echo port
 *
 * This class implements a TTCN-3 system port whose role is just to repeat all
 * the traffic sent to it. Thus triSend() triggers immediately a
 * triEnqueueMsg() call to the originating component, repeating the same
 * message.
 *
 * Echo port is useful for testing a codec. For example to test the decoder
 * one can send a raw message (octetstring, charstring...) and receive the
 * same message but decoded using another type (eg. SipMessage).
 *
 */
class EchoPort : public t3devlib::Port
{
public:
	EchoPort (t3devlib::PortId& id);
	~EchoPort();
		
protected:
	bool Map (const t3devlib::PortId& port_id);
	bool Unmap (const t3devlib::PortId& port_id);
	bool Send (const t3devlib::ComponentId& from, const t3devlib::Bitstring& msg);
		
};


#endif
