//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / ILMI
//
//File: ilmistate.h
//
//Version: $Revision: 1.4 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/06/17 11:12:41 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __ILMI_STATE_H__
#define __ILMI_STATE_H__

#include <typeinfo>

#include "asn/rfc1157-snmp.h"

#include "pf/state.h"
#include "iface/cpcsif/cpcsupprimitives.h"

class pfProtocol;
class ilmiProtocol;

//
//Class: ilmiState
//
//Description:
//

class ilmiState : public pfState, public cpcsUpInputs
{
    public:
        // singleton
        static ilmiState *instance(void);

        // primitives from cpcsAdapter
        virtual void cpcsUNITDATAindAct(cpcsUNITDATAind *messenger_,
                                        pfProtocol *protocol_) const;

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

        // synchronous PDU inputs
        virtual void getRequestPduAct(GetRequest_PDU* pdu_,
                                      ilmiProtocol *protocol_) const;

        virtual void getNextRequestPduAct(GetNextRequest_PDU* pdu_,
                                          ilmiProtocol *protocol_) const;

        virtual void getResponsePduAct(GetResponse_PDU* pdu_,
                                       ilmiProtocol *protocol_) const;

        virtual void setRequestPduAct(SetRequest_PDU* pdu_,
                                      ilmiProtocol *protocol_) const;

        virtual void trapPduAct(Trap_PDU* pdu_,
                                ilmiProtocol *protocol_) const;
        
    private:
        // singleton
        static ilmiState *_only;
};

#endif // __ILMI_STATE_H__

