Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

services.h

00001 
00002 #ifndef __UPF_SERVICES_H__
00003 #define __UPF_SERVICES_H__
00004 
00005 #ifdef HAVE_CONFIG_H
00006 #include "config.h"
00007 #endif
00008 #include "upf/upf.h"
00009 #include "upf/IServiceManager.h"
00010 
00011 #include <list>
00012 
00013 namespace upf { namespace impl {
00014 
00015 using namespace std;
00016 
00017 class ServiceManager : public IServiceManager
00018 {
00019 public:
00020     ServiceManager();
00021     virtual ~ServiceManager();
00022 
00023     virtual bool bind(const string& name, IObject* obj, long permissions);
00024     virtual bool rebind(const string& name, IObject* obj);
00025     virtual bool unbind(const string& name);
00026     virtual Ptr<IObject> resolve(const string& name);
00027     virtual void addListener(const string& name, IServiceChangeListener* listener);
00028     
00029 private:
00030     struct ServiceData
00031     {
00032         Ptr<IObject>                object;
00033         long                        permissions;
00034     };
00035 
00036     typedef StringHash<ServiceData> ServicesTbl;
00037     typedef list< Ptr<IServiceChangeListener> > Listeners;
00038     typedef StringHash<Listeners> ListenersTbl;
00039 
00040     bool doBind(ServicesTbl::iterator& service, IObject *object, long perm);
00041 
00042     ServicesTbl m_services;
00043     ListenersTbl m_listeners;
00044 
00045     UPF_DECLARE_CLASS(ServiceManager)
00046 };
00047 
00048 
00049 } } // end of namespace
00050 
00051 #endif

Generated on Wed Jan 15 23:10:55 2003 for Universal Plugins Framework by doxygen1.2.18