//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: unitestccstate.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_UNITESTCCSTATE_H__
#define __UNI_UNITESTCCSTATE_H__

#include <typeinfo>
#include <string>

#include "pf/state.h"

#include "iface/sigif/sigupprimitives.h"
#include "iface/sigif/sigdownprimitives.h"

#include "unitestccprotocol.h"

class uniTestCCState : public sigUpInputs,
                       public sigDownInputs,
                       public pfState
{
    public:
        static uniTestCCState *instance(void);

        // up
        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_);

        // down
        virtual void sigSETUPreqAct(
            sigSETUPreq *message_,
            pfProtocol *protocol_);
        virtual void sigPROCEEDINGreqAct(
            sigPROCEEDINGreq *message_,
            pfProtocol *protocol_);
        virtual void sigSETUPrespAct(
            sigSETUPresp *message_,
            pfProtocol *protocol_);
        virtual void sigSETUP_COMPLETEreqAct(
            sigSETUP_COMPLETEreq *message_,
            pfProtocol *protocol_);
        virtual void sigRELEASEreqAct(
            sigRELEASEreq *message_,
            pfProtocol *protocol_);
        virtual void sigRELEASErespAct(
            sigRELEASEresp *message_,
            pfProtocol *protocol_);
        virtual void sigRESETreqAct(
            sigRESETreq *message_,
            pfProtocol *protocol_);
        virtual void sigRESETrespAct(
            sigRESETresp *message_,
            pfProtocol *protocol_);
        virtual void sigRESET_ERRORrespAct(
            sigRESET_ERRORresp *message_,
            pfProtocol *protocol_);
        
        virtual void uniTESTtimeoutAct(pfProtocol *protocol_);

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

#endif //__UNI_UNITESTCCSTATE_H__
