//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SIG
//
//File: sigmode.h
//
//Version: $Revision: 1.2 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/11 13:28:46 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      Default mode which cannot be used for action. Each signalling protocol
//      has to implement own modes based on this one.
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __SIG_SIGMODE_H__
#define __SIG_SIGMODE_H__

class pfState;
class sigProtocol;

class sigMode
{
    public:
        static sigMode *instance(void);

        virtual bool isNetworkMode(void);
        virtual void continueReleaseProcess(sigProtocol *protocol_);

        virtual pfState *createNullState(void) const;
        virtual pfState *createCallInitiatedState(void) const;
        virtual pfState *createOutgoingCallProceedingState(void) const;
        virtual pfState *createCallDeliveredState(void) const;
        virtual pfState *createCallPresentState(void) const;
        virtual pfState *createCallReceivedState(void) const;
        virtual pfState *createConnectRequestState(void) const;
        virtual pfState *createIncomingCallProceedingState(void) const;
        virtual pfState *createActiveState(void) const;
        virtual pfState *createReleaseRequestState(void) const;
        virtual pfState *createReleaseIndicationState(void) const;
        virtual pfState *createReleaseCollisionState(void) const;
        
    protected:
        sigMode(void);
        virtual ~sigMode(void);

    private:
        static sigMode *_only;
};

#endif // __SIG_SIGMODE_H__
