//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: uniteststate.h
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/10/16 05:10:56 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Jari Pusa
//
//Description:
//
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __UNI_UNITESTSTATE_H__
#define __UNI_UNITESTSTATE_H__

#include <typeinfo>
#include <string>

#include "pf/state.h"

#include "iface/sigif/sigupprimitives.h"
#include "protocol/uni/uniprimitives.h"

#include "unitestadapter.h"

class uniTestState : public sigUpInputs,
                     public uniPMPInputs,
                     public pfState
{
    public:
        static uniTestState *instance(void);

        virtual void sigSETUPindAct(
            sigSETUPind *message_,
            pfProtocol *protocol_);
        virtual void sigPROCEEDINGindAct(
            sigPROCEEDINGind *message_,
            pfProtocol *protocol_);
        virtual void sigSETUPconfAct(
            sigSETUPconf *message_,
            pfProtocol *protocol_);
        virtual void sigSETUP_COMPLETEindAct(
            sigSETUP_COMPLETEind *message_,
            pfProtocol *protocol_);
        virtual void sigRELEASEindAct(
            sigRELEASEind *message_,
            pfProtocol *protocol_);
        virtual void sigRELEASEconfAct(
            sigRELEASEconf *message_,
            pfProtocol *protocol_);
        virtual void sigRESETindAct(
            sigRESETind *message_,
            pfProtocol *protocol_);
        virtual void sigRESETconfAct(
            sigRESETconf *message_,
            pfProtocol *protocol_);
        virtual void sigRESET_ERRORindAct(
            sigRESET_ERRORind *message_,
            pfProtocol *protocol_);

        virtual void uniADD_PARTYreqAct(
            uniADD_PARTYreq *message_,
            pfProtocol *protocol_);
        virtual void uniADD_PARTYrespAct(
            uniADD_PARTYresp *message_,
            pfProtocol *protocol_);
        virtual void uniADD_PARTYerrorAct(
            uniADD_PARTYerror *message_,
            pfProtocol *protocol_);
        virtual void uniDROP_PARTYreqAct(
            uniDROP_PARTYreq *message_,
            pfProtocol *protocol_);
        virtual void uniDROP_PARTYrespAct(
            uniDROP_PARTYresp *message_,
            pfProtocol *protocol_);
        virtual void uniSTATUSreqAct(
            uniSTATUSreq *message_,
            pfProtocol *protocol_);
        virtual void uniSTATUSrespAct(
            uniSTATUSresp *message_,
            pfProtocol *protocol_);
        
        virtual void uniTESTtimeoutAct(pfProtocol *protocol_);

    protected:
        uniTestState(void);
        virtual ~uniTestState(void);
        
    private:
        static uniTestState *_only;
};

#endif //__UNI_UNITESTSTATE_H__
