(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                 
 48                 PEGASUS_NAMESPACE_BEGIN
 49                 
 50                 /** Maintains a cache for all association classes.
 51                 */
 52                 class PEGASUS_REPOSITORY_LINKAGE AssocClassCache
 53                 {
 54                 public:
 55                 
 56                     /** Retrieves a singleton instance of the class cache for the
 57                      * given namespace.
 58                     */
 59                     static AssocClassCache* getAssocClassCache(const String& nameSpace);
 60                     static void cleanupAssocClassCaches();
 61                 
 62                     /** Retrieve an entry for an association class through direct
 63 r.kieninger 1.1      * access via the from class name.
 64                     */
 65 karl        1.3     Boolean getAssocClassEntry(const String& fromClassName,
 66 r.kieninger 1.1                                Array< Array<String> >& entryList);
 67                 
 68                     /** Add a new entry to the association cache.
 69                     */
 70 karl        1.3     Boolean addRecord(const String& fromClassName,
 71 r.kieninger 1.1                       Array<String> assocClassEntry);
 72                 
 73                     /** Remove an entry from the association cache specified by the given
 74                      * association class name.
 75                     */
 76 karl        1.3     Boolean removeEntry(const String& fromClassName);
 77 r.kieninger 1.1 
 78                    /** Remove an association record from the association cache specified by the given
 79                     *  from class name and association name.
 80                     */
 81 karl        1.3     Boolean removeRecord(const String& fromClassName,
 82                                          const String& assocClassName);
 83 r.kieninger 1.1 
 84                     /** Check if the cache is loaded with objects already.
 85                     */
 86                     Boolean isActive();
 87                     void setActive(Boolean flag);
 88                 
 89                 private:
 90                     static Array<AssocClassCache*> _assocClassCacheList;
 91                     String _nameSpace;
 92                     Boolean _isInitialized;
 93                 
 94                     typedef HashTable<String, Array< Array<String> >,
 95 karl        1.3        EqualNoCaseFunc, HashLowerCaseFunc > AssocClassCacheHashTableType;
 96 r.kieninger 1.1 
 97                     AssocClassCacheHashTableType *_assocClassCache;
 98                 
 99                     AssocClassCache() {/*private*/};
100                     ~AssocClassCache();
101                     AssocClassCache(const String& nameSpace);
102                 };
103                 
104                 PEGASUS_NAMESPACE_END
105                 
106                 #endif /* Pegasus_AssocClassCache_h */

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2