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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2