//Editor-Info: -*- C++ -*-
//
//Subject: GSMP
//
//File: gsmpfactory.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:
//	Vesa-Matti Puro
//      Harri Sunila
//
//Description:
//      GSMP Factory is an object to create gsmpConnectionManagement and
//      gsmpConfigurationManagement objects.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//      
//Licence:
//
//History:
//

#ifndef __GSMPFACTORY_H__
#define __GSMPFACTORY_H__

#include "pf/exception.h"
#include "pf/types.h"
#include "gsmpconnectionmanagement.h"
#include "gsmpconfigurationmanagement.h"
#include "gsmpeventmanagement.h"

//
// Class: gsmpFactory
//
// Description:
//

class gsmpFactory
{
    public:
        static gsmpFactory *instance(void);
        void init(const pfConduit &gsmp_);
        virtual ~gsmpFactory(void);
        
        // Create different management interfaces 

        gsmpConnectionManagement *createConnectionManagement(
            swFabricCallback *callback_);

        gsmpConfigurationManagement *createConfigurationManagement(
            swConfigControl *configControl_);

        gsmpEventManagement *createEventManagement(
            swEventIf *eventIf_);
        
    private:
        gsmpFactory(void);
        static gsmpFactory *_only;
        pfConduit _gsmp;
};

#endif	// __GSMPFACTORY_H__
