Horus Doc || Corba Reference || Corba   Client Server   Stubs C++   Stubs Java   Servant Generator  

HxDefaultDataObjectManager.h

Go to the documentation of this file.
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 HxDefaultObjectManager_h
00010 #define HxDefaultObjectManager_h
00011 
00012 #include "HxDataObjectManager.h"
00013 #include <list>
00014 #include <map>
00015 
00016 
00023 class HxDefaultDataObjectManager : public HxDataObjectManager
00024 {
00025 public:
00027                     HxDefaultDataObjectManager();
00028 
00033                     HxDefaultDataObjectManager(const char* repId, 
00034                         const char* objName);
00035 
00037     virtual         ~HxDefaultDataObjectManager();
00038 
00039     virtual void    objectCreated(const PortableServer::ObjectId& oid);
00040     virtual void    objectUsed(const PortableServer::ObjectId& oid);
00041     virtual void    objectAccessed(const PortableServer::ObjectId& oid);
00042     virtual void    objectDeleted(const PortableServer::ObjectId& oid);
00043 
00044     virtual void    setTotalLimit(HxString unit, int value);
00045     virtual int     getTotalLimit(HxString unit);
00046     virtual void    setObjectLimit(HxString unit, int value);
00047     virtual int     getObjectLimit(HxString unit);
00048     virtual int     getUsed(HxString unit);
00049 
00050     virtual void    getUnitList(HxStringListBackInserter slPtr);
00051 
00052 protected:
00053 
00054     HxString        _objName;
00055     int             _totalObjLimit;
00056     int             _usedObjects;
00057 
00062     struct HxDefaultObjectInfo
00063     {
00064         //int id;
00065         PortableServer::ObjectId oid;
00066     };
00068     virtual HxDefaultObjectInfo* createObjectInfo();
00069 
00074     virtual void                 setObjectInfo(
00075                                     PortableServer::Servant servant, 
00076                                     HxDefaultObjectInfo* info);
00077 
00083     virtual void                 updateObjectInfo(
00084                                     PortableServer::Servant servant, 
00085                                     HxDefaultObjectInfo* info);
00086 
00087                                  /* Function called by "objectDeleted".
00088                                   * Update limits.
00089                                   */
00090     virtual void                 removeObjectInfo(HxDefaultObjectInfo* info);
00091 
00092                                  /* Return whether the object is beyond any
00093                                   * of the object limits or not.
00094                                   */
00095     virtual bool                 objectExceedsLimit(HxDefaultObjectInfo* info);
00096 
00097                                  /* Return whether total limits has been exceded
00098                                   * or not.
00099                                   */
00100     virtual bool                 limitExceeded();
00101 
00102                                  /* Return if objects handled by this manager 
00103                                   * can be modified by their operations (that is:
00104                                   * "objectUsed" has to check limits again or not?)
00105                                   */
00106     virtual bool                 objectCanGrow();
00107 
00108 private:
00109 
00110     void                         checkLimit();
00111 
00112     struct lessOID : std::binary_function<PortableServer::ObjectId, PortableServer::ObjectId, bool>
00113     {   
00114         bool operator()(const PortableServer::ObjectId& x, const PortableServer::ObjectId& y) const;
00115     };
00116 
00117     typedef std::list<HxDefaultObjectInfo*>                             List;
00118     typedef std::map<PortableServer::ObjectId, List::iterator, lessOID> Map;
00119 
00120     Map                     _map;
00121     List                    _list;
00122 
00123     PortableServer::POA_var _dataPOA;
00124 };
00125 
00126 #endif //HxDefaultObjectManager_h
00127 

Generated on Tue Feb 3 14:20:11 2004 for CorbaReference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001