//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: gsmpidlestate.h
//
//Version: $Revision: 1.8 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/12/10 10:27:00 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Harri Sunila
//
//Description:
//      GSMP is in idle state, if the link between the switch and controller
//      is not established.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __GSMP_GSMPIDLESTATE_H__
#define __GSMP_GSMPIDLESTATE_H__

#include "gsmpstate.h"
#include "gsmpprotocol.h"

class gsmpRequestTimeout;
class gsmpConnectionManagementMessage;

class gsmpIdleState : public gsmpProtocolState 
{
    public:
        static gsmpIdleState *instance(void);
        virtual ~gsmpIdleState(void);

        // Actions for incoming messages

        // Actions for GSMP Configuration Messages

        virtual void gsmpSwitchConfigurationRequestMessageAct(
            gsmpSwitchConfigurationRequestMessage *message_,
            pfProtocol *protocol_);

        virtual void gsmpPortConfigurationRequestMessageAct(
            gsmpPortConfigurationRequestMessage *message_,
            pfProtocol *protocol_);
        
        virtual void gsmpAllPortsConfigurationRequestMessageAct(
            gsmpAllPortsConfigurationRequestMessage *message_,
            pfProtocol *protocol_);

    private:
        gsmpIdleState(void);
        virtual void processConnectionManagementMessage(
            gsmpConnectionManagementMessage *message_,
            pfProtocol *protocol_);
        static gsmpIdleState *_only;
};

#endif // __GSMP_GSMPIDLESTATE_H__
