//Editor-Info: -*- C++ -*-
//
//Subject: TOVE-project / MTP3 protocol
//
//File: mtp3state_hmrt_idle.h
//
//Version: $Revision: 1.4 $
//
//Date: $Date: 1998/04/20 08:36:01 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Definition of state class idle of MTP3 message distribution (HMRT)
//      functional block. Recommendation Q.704.
//
//Copyright:
//
//
//Licence:
//
//
//History:

#ifndef __MTP3_STATE_HMRT_IDLE_H__
#define __MTP3_STATE_HMRT_IDLE_H__

#include "mtp3state.h"

class pfFrame;

//
//Class: mtp3_HMRT_Idle
//
//Inherits: mtp3State
//
//Description:
//      This block routes messages to other SP. Messages come from
//      some user part or other SP 
//

class mtp3_HMRT_Idle : public mtp3State
{
    public:
        // singleton
        static mtp3_HMRT_Idle *instance(void);

        // primitives from upper layer
        virtual void mtpTRANSFERreqAct(
            mtpTRANSFERreq *messenger_,
            pfProtocol *protocol_);
        
        // primitives from lower layer
	virtual void naalRECEIVED_MESSAGEindAct(
            naalRECEIVED_MESSAGEind *messenger_,
	    pfProtocol *protocol_);

    protected:
        // singleton
        mtp3_HMRT_Idle(void);
        virtual ~mtp3_HMRT_Idle(void);
        
        static mtp3_HMRT_Idle *_only;

    private:
        void encodeMessage(mtpTRANSFERreq *messenger_,
                           pfFrame &frame_);
};

#endif // __MTP3_STATE_HMRT_IDLE_H__ 
