//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / MTP3 protocol 
//
//File: mtp3state_protocol.h
//
//Version: $Revision: 1.6 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/04/20 08:36:01 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Petteri Koponen
//      Timo Pärnänen
//
//Description:
//      This file contains definition of the state class for mtp3Protocol.
//      This class is a specialized protocol that only accepts primitives
//      from MTP3's neighboring levels (named as level 2 and 4) and passes
//      them to right blocks.
//
//Copyright:
//
//
//Licence:
//
//
//History:

#ifndef __MTP3_STATE_PROTOCOL_H__
#define __MTP3_STATE_PROTOCOL_H__

#include "mtp3state.h"

class pfProtocol;

//Class: mtp3ProtocolState
//
//Description:
//    See file description.
//      
//

class mtp3ProtocolState : public mtp3State
{
    public:
        // singleton
        static mtp3ProtocolState *instance(void);
        
        // actions for incoming MTP primitives from level 4
        virtual void mtpTRANSFERreqAct(
            mtpTRANSFERreq *messenger_,
            pfProtocol *protocol_);
        
        // actions for incoming NAAL primitives from level 2
        virtual void naalRECEIVED_MESSAGEindAct(
            naalRECEIVED_MESSAGEind *messenger_,
            pfProtocol *protocol_);

    protected:
        mtp3ProtocolState(void);
        virtual ~mtp3ProtocolState(void);

    private:
        // singleton
        static mtp3ProtocolState *_only;
};

#endif // __MTP3_STATE_PROTOCOL_H__

