//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / BISUP
//
//File: nistate.h
//
//Version: $Revision: 1.10 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 07:42:31 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      Network Interface (NI) protocol has only one state.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __BISUP_NISTATE_H__
#define __BISUP_NISTATE_H__

#include "pf/state.h"
#include "niprotocol.h"
#include "nnimessages.h"
#include "iface/sigif/sigdownprimitives.h"
#include "iface/mtpif/mtpupprimitives.h"

class niState : public pfState,
                public nniMessageInputs,
                public mtpUpInputs
{
    public:
        static niState *instance(void);
        virtual ~niState(void);
        
        virtual void nniACMpduAct(
            nniACMpdu *message_,
            pfProtocol *protocol_);
        virtual void nniANMpduAct(
            nniANMpdu *message_,
            pfProtocol *protocol_);
        virtual void nniCPGpduAct(
            nniCPGpdu *message_,
            pfProtocol *protocol_);
        virtual void nniIAMpduAct(
            nniIAMpdu *message_,
            pfProtocol *protocol_);
        virtual void nniIAApduAct(
            nniIAApdu *message_,
            pfProtocol *protocol_);
        virtual void nniIARpduAct(
            nniIARpdu *message_,
            pfProtocol *protocol_);
        virtual void nniRELpduAct(
            nniRELpdu *message_,
            pfProtocol *protocol_);
        virtual void nniRLCpduAct(
            nniRLCpdu *message_,
            pfProtocol *protocol_);


        // mtpUpInputs
        virtual void mtpTRANSFERindAct(
            mtpTRANSFERind *message_,
            pfProtocol *protocol_);
        virtual void mtpPAUSEindAct(
            mtpPAUSEind *message_,
            pfProtocol *protocol_);
        virtual void mtpRESUMEindAct(
            mtpRESUMEind *message_,
            pfProtocol *protocol_);
        virtual void mtpSTATUSindAct(
            mtpSTATUSind *message_,
            pfProtocol *protocol_);
        
    private:
        niState(void);
        static niState *_only;
        niProtocol *protocolCast(pfProtocol *protocol_) const;
};

#endif // __BISUP_NISTATE_H__
