//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SCCP protocol
//
//File: sccpstate_protocol.h
//
//Version: $Revision: 1.4 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/02/05 12:45:25 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Purpose of this state is to receive primitives from
//      neighbour protocol layers and direct primitives to
//      a right SCCP block. 
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __SCCP_STATE__PROTOCOL_H__
#define __SCCP_STATE__PROTOCOL_H__

#include "sccpstate.h"

class pfProtocol;

//
//Class: sccpProtocolState
//
//Description:
//    This is only state for sccpProtocol class which
//    plays the role of mediator in Mediator pattern.
//

class sccpProtocolState : public sccpState
{
    public:
        // singleton
        static sccpProtocolState *instance(void);

        // primitives from upper layer
        virtual void sccpN_UNITDATAreqAct(sccpN_UNITDATAreq *messenger_,
                                          pfProtocol *protocol_);
        
        // primitives from lower layer
        virtual void mtpTRANSFERindAct(mtpTRANSFERind *messenger_,
                                       pfProtocol *protocol_);
        
    protected:
        sccpProtocolState(void);
        virtual ~sccpProtocolState(void);

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

#endif // __SCCP_STATE__PROTOCOL_H__

