(file) Return to AssocClassCache.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Repository

  1 karl  1.2 //%2006////////////////////////////////////////////////////////////////////////
  2 r.kieninger 1.1 //
  3                 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4                 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5                 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6                 // IBM Corp.; EMC Corporation, The Open Group.
  7                 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8                 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl        1.2 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10                 // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11                 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12                 // EMC Corporation; Symantec Corporation; The Open Group.
 13 r.kieninger 1.1 //
 14                 // Permission is hereby granted, free of charge, to any person obtaining a copy
 15                 // of this software and associated documentation files (the "Software"), to
 16                 // deal in the Software without restriction, including without limitation the
 17                 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18                 // sell copies of the Software, and to permit persons to whom the Software is
 19                 // furnished to do so, subject to the following conditions:
 20 karl        1.2 // 
 21 r.kieninger 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22                 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23                 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24                 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25                 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26                 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27                 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28                 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29                 //
 30                 //==============================================================================
 31                 //
 32                 // Author: Robert Kieninger (kieningr@de.ibm.com)
 33                 //
 34                 // Modified By:
 35                 //
 36                 //%/////////////////////////////////////////////////////////////////////////////
 37                 
 38                 #ifndef Pegasus_AssocClassCache_h
 39                 #define Pegasus_AssocClassCache_h
 40                 
 41                 #include <Pegasus/Common/Config.h>
 42 r.kieninger 1.1 #include <Pegasus/Common/CIMObjectPath.h>
 43                 #include <Pegasus/Common/String.h>
 44                 #include <Pegasus/Common/ArrayInternal.h>
 45                 #include <Pegasus/Repository/Linkage.h>
 46                 #include <Pegasus/Common/HashTable.h>
 47                 #include <Pegasus/Common/IPC.h>
 48                 
 49                 PEGASUS_NAMESPACE_BEGIN
 50                 
 51                 /** Maintains a cache for all association classes.
 52                 */
 53                 class PEGASUS_REPOSITORY_LINKAGE AssocClassCache
 54                 {
 55                 public:
 56                 
 57                     /** Retrieves a singleton instance of the class cache for the
 58                      * given namespace.
 59                     */
 60                     static AssocClassCache* getAssocClassCache(const String& nameSpace);
 61                     static void cleanupAssocClassCaches();
 62                 
 63 r.kieninger 1.1     /** Retrieve an entry for an association class through direct
 64                      * access via the from class name.
 65                     */
 66 marek       1.2.2.1     Boolean getAssocClassEntry(const String& fromClassName,
 67 r.kieninger 1.1                                    Array< Array<String> >& entryList);
 68                     
 69                         /** Add a new entry to the association cache.
 70                         */
 71 marek       1.2.2.1     Boolean addRecord(const String& fromClassName,
 72 r.kieninger 1.1                           Array<String> assocClassEntry);
 73                     
 74                         /** Remove an entry from the association cache specified by the given
 75                          * association class name.
 76                         */
 77 marek       1.2.2.1     Boolean removeEntry(const String& fromClassName);
 78 r.kieninger 1.1     
 79                        /** Remove an association record from the association cache specified by the given
 80                         *  from class name and association name.
 81                         */
 82 marek       1.2.2.1     Boolean removeRecord(const String& fromClassName,
 83                                              const String& assocClassName);
 84 r.kieninger 1.1     
 85                         /** Check if the cache is loaded with objects already.
 86                         */
 87                         Boolean isActive();
 88                         void setActive(Boolean flag);
 89                     
 90                     private:
 91                         static Array<AssocClassCache*> _assocClassCacheList;
 92                         String _nameSpace;
 93                         Boolean _isInitialized;
 94                     
 95                         typedef HashTable<String, Array< Array<String> >,
 96                            EqualFunc<String>, HashFunc<String> > AssocClassCacheHashTableType;
 97                     
 98                         AssocClassCacheHashTableType *_assocClassCache;
 99                     
100                         AssocClassCache() {/*private*/};
101                         ~AssocClassCache();
102                         AssocClassCache(const String& nameSpace);
103                     };
104                     
105 r.kieninger 1.1     PEGASUS_NAMESPACE_END
106                     
107                     #endif /* Pegasus_AssocClassCache_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2