//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: gsmpeventmanagement.h
//
//Version: $Revision: 1.1 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/12/10 10:27:32 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Harri Sunila
//
//Description:
//      gsmpEventManager provides an interface to monitor the state of
//      underlying gsmpProtocol and the GSMP controllable switching fabric.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __GSMP_GSMPEVENTMANAGEMENT_H__
#define __GSMP_GSMPEVENTMANAGEMENT_H__

class swEventIf;

class gsmpLinkEstablished;
class gsmpLinkNotestablished;

class gsmpPortUpEventMessage;
class gsmpPortDownEventMessage;
class gsmpInvalidVPIVCIEventMessage;
class gsmpNewPortEventMessage;
class gsmpDeadPortEventMessage;

#include "gsmpdefs.h"
#include "pf/adapter.h"
#include "gsmpprotocolstate.h"

class gsmpEventManagement : public pfAdapter, public gsmpProtocolState
{
    public:
        gsmpEventManagement(void);
        explicit gsmpEventManagement(swEventIf *eventIf_);
        gsmpEventManagement(gsmpEventManagement &other_);
        virtual ~gsmpEventManagement(void);

        virtual void disconnect(void);

        // Act methods for the single state EFSA

        virtual void gsmpLinkEstablishedAct(gsmpLinkEstablished *message_,
                                            pfProtocol *protocol_);
        virtual void gsmpLinkNotEstablishedAct(
            gsmpLinkNotEstablished *message_,
            pfProtocol *protocol_);

        virtual void gsmpPortUpEventMessageAct(
            gsmpPortUpEventMessage *message_,
            pfProtocol *protocol_);
        virtual void gsmpPortDownEventMessageAct(
            gsmpPortDownEventMessage *message_,
            pfProtocol *protocol_);
        virtual void gsmpInvalidVPIVCIEventMessageAct(
            gsmpInvalidVPIVCIEventMessage *message_,
            pfProtocol *protocol_);
        virtual void gsmpNewPortEventMessageAct(
            gsmpNewPortEventMessage *message_,
            pfProtocol *protocol_);
        virtual void gsmpDeadPortEventMessageAct(
            gsmpDeadPortEventMessage *message_,
            pfProtocol *protocol_);

        virtual void gsmpForgetEventsMessageAct(
            gsmpForgetEventsMessage *message_,
            pfProtocol *protocol_);
        
    private:
        swEventIf *_eventIf;
};
            
#endif // __GSMP_GSMPEVENTMANAGEMENT_H__
