//Editor-Info: -*- C++ -*-
//
//Subject: SCOMS project / 
//
//File: nnimessage.h
//
//Version: $Revision: 1.3 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 09:07:19 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      Primitives used within (b)isup application exchange process, ie.
//      between (b)isup and network interface instances.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __BISUP_NNIMESSAGES_H__
#define __BISUP_NNIMESSAGES_H__

#include <typeinfo>
#include "pf/messenge.h"

//
// Class: nniMessage
//
// Description:
//       Base class for all NNI-pdus.
//

class nniMessage : public pfMessenger
{
    public:
        virtual ~nniMessage(void);
        
    protected:
        nniMessage(void);
};


//
// Class: nniACMpdu
//
// Description:
//
//

class nniACMpdu : public nniMessage
{
    public:
        nniACMpdu(void);
        virtual ~nniACMpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


//
// Class: nniANMpdu
//
// Description:
//
//

class nniANMpdu : public nniMessage
{
    public:
        nniANMpdu(void);
        virtual ~nniANMpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


//
// Class: nniCPGpdu
//
// Description:
//
//

class nniCPGpdu : public nniMessage
{
    public:
        nniCPGpdu(void);
        virtual ~nniCPGpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


//
// Class: nniIAMpdu
//
// Description:
//
//

class nniIAMpdu : public nniMessage
{
    public:
        nniIAMpdu(void);
        virtual ~nniIAMpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


//
// Class: nniIAApdu
//
// Description:
//
//

class nniIAApdu : public nniMessage
{
    public:
        nniIAApdu(void);
        virtual ~nniIAApdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


//
// Class: nniIARpdu
//
// Description:
//
//

class nniIARpdu : public nniMessage
{
    public:
        nniIARpdu(void);
        virtual ~nniIARpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};

//
// Class: nniRELpdu
//
// Description:
//
//

class nniRELpdu : public nniMessage
{
    public:
        nniRELpdu(void);
        virtual ~nniRELpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};

//
// Class: nniRLCpdu
//
// Description:
//
//

class nniRLCpdu : public nniMessage
{
    public:
        nniRLCpdu(void);
        virtual ~nniRLCpdu(void);
        
        virtual void apply(pfState *state_, pfProtocol *const protocol_);
};


// 
// Class: nniMessageInputs
//
// Description:
//      Abstract classes to be inherited at such (state) classes, which
//      wish to get previouly represented primitives as input messages.
//

class nniMessageInputs
{
    public:
        virtual void nniACMpduAct(
            nniACMpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniANMpduAct(
            nniANMpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniCPGpduAct(
            nniCPGpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniIAMpduAct(
            nniIAMpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniIAApduAct(
            nniIAApdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniIARpduAct(
            nniIARpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniRELpduAct(
            nniRELpdu *message_,
            pfProtocol *protocol_) = 0;
        virtual void nniRLCpduAct(
            nniRLCpdu *message_,
            pfProtocol *protocol_) = 0;
};

#endif // __BISUP_NNIMESSAGES_H__
