00001 /* 00002 * Copyright (c) 2001, University of Amsterdam, The Netherlands. 00003 * All rights reserved. 00004 * 00005 * Author(s): 00006 * Marc Navarro (mnavarro@wins.uva.nl) 00007 */ 00008 00009 #ifndef HxDataObjectManager_h 00010 #define HxDataObjectManager_h 00011 00012 #include <OB/CORBA.h> 00013 #include "HxString.h" 00014 #include "HxStringList.h" 00015 #include <map> 00016 00017 00027 class HxDataObjectManager 00028 { 00029 public: 00030 virtual ~HxDataObjectManager(); 00031 00035 static void init(const char* poaName); 00036 00038 static HxDataObjectManager* getDefault(); 00040 static HxDataObjectManager* get(const char* name); 00041 00045 static void getNameList(HxStringListBackInserter slPtr); 00046 00048 virtual void objectCreated(const PortableServer::ObjectId& oid) = 0; 00049 00053 virtual void objectAccessed(const PortableServer::ObjectId& oid) = 0; 00054 00058 virtual void objectUsed(const PortableServer::ObjectId& oid) = 0; 00059 00061 virtual void objectDeleted(const PortableServer::ObjectId& oid) = 0; 00062 00066 virtual void setTotalLimit(HxString unit, int value) = 0; 00067 virtual int getTotalLimit(HxString unit) = 0; 00068 00072 virtual void setObjectLimit(HxString unit, int value) = 0; 00073 virtual int getObjectLimit(HxString unit) = 0; 00074 00075 virtual int getUsed(HxString unit) = 0; 00076 00078 virtual void getUnitList(HxStringListBackInserter slPtr) = 0; 00079 00080 protected: 00081 static void put(HxDataObjectManager* mgr, const char* name); 00082 00083 private: 00084 typedef std::map<HxString, HxDataObjectManager*> Map; 00085 00086 static Map _map; 00087 static HxDataObjectManager* _default; 00088 }; 00089 00090 #endif //HxDataObjectManager_h