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

  1 karl  1.5 //%2006////////////////////////////////////////////////////////////////////////
  2 kumpf 1.1 //
  3 karl  1.2 // 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 kumpf 1.1 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.2 // 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.4 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10           // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl  1.5 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12           // EMC Corporation; Symantec Corporation; The Open Group.
 13 kumpf 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 kumpf 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: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
 33           //         Jenny Yu, Hewlett-Packard Company (jenny_yu@hp.com)
 34           //
 35           // Modified By:
 36           //
 37           //%/////////////////////////////////////////////////////////////////////////////
 38           
 39           #ifndef Pegasus_OOPProviderManagerRouter_h
 40           #define Pegasus_OOPProviderManagerRouter_h
 41           
 42 kumpf 1.1 #include <Pegasus/Common/Config.h>
 43           #include <Pegasus/Common/String.h>
 44           #include <Pegasus/Common/HashTable.h>
 45           #include <Pegasus/Common/CIMMessage.h>
 46           #include <Pegasus/Common/IPC.h>
 47           
 48           #include <Pegasus/ProviderManager2/ProviderManagerRouter.h>
 49           #include <Pegasus/ProviderManager2/ProviderManager.h>
 50           #include <Pegasus/ProviderManager2/Linkage.h>
 51           
 52           PEGASUS_NAMESPACE_BEGIN
 53           
 54 carolann.graves 1.7 typedef void (*PEGASUS_PROVIDERMODULEFAIL_CALLBACK_T)(const String &,
 55                         const String &, Uint16);
 56                     
 57 kumpf           1.1 class ProviderAgentContainer;
 58                     
 59                     typedef HashTable<String, ProviderAgentContainer*, EqualFunc<String>,
 60                         HashFunc<String> > ProviderAgentTable;
 61                     
 62                     class PEGASUS_PPM_LINKAGE OOPProviderManagerRouter
 63                         : public ProviderManagerRouter
 64                     {
 65                     public:
 66 kumpf           1.6     OOPProviderManagerRouter(
 67                             PEGASUS_INDICATION_CALLBACK_T indicationCallback,
 68 carolann.graves 1.7         PEGASUS_RESPONSE_CHUNK_CALLBACK_T responseChunkCallback,
 69                             PEGASUS_PROVIDERMODULEFAIL_CALLBACK_T providerModuleFailCallback);
 70 kumpf           1.1 
 71                         virtual ~OOPProviderManagerRouter();
 72                     
 73                         virtual Message* processMessage(Message* message);
 74                     
 75                         virtual Boolean hasActiveProviders();
 76                         virtual void unloadIdleProviders();
 77                     
 78                     private:
 79                         //
 80                         // Private methods
 81                         //
 82                     
 83                         /** Unimplemented */
 84                         OOPProviderManagerRouter();
 85                         /** Unimplemented */
 86                         OOPProviderManagerRouter(const OOPProviderManagerRouter&);
 87                         /** Unimplemented */
 88                         OOPProviderManagerRouter& operator=(const OOPProviderManagerRouter&);
 89                     
 90                         /**
 91 kumpf           1.1         Return a pointer to the ProviderAgentContainer for the specified
 92 carolann.graves 1.7         module instance and requesting user.  If no appropriate
 93                             ProviderAgentContainer exists, one is created in an uninitialized state.
 94 kumpf           1.1      */
 95 kumpf           1.3     ProviderAgentContainer* _lookupProviderAgent(
 96 carolann.graves 1.7         const CIMInstance& providerModule,
 97                             CIMRequestMessage* request);
 98 kumpf           1.3 
 99                         /**
100                             Return an array of pointers to ProviderAgentContainers for the
101                             specified moduleName.
102                          */
103                         Array<ProviderAgentContainer*> _lookupProviderAgents(
104                             const String& moduleName);
105 kumpf           1.1 
106                         /**
107                             Send the specified CIMRequestMessage to all initialized Provider
108                             Agents in the _providerAgentTable.
109                          */
110                         CIMResponseMessage* _forwardRequestToAllAgents(CIMRequestMessage* request);
111                     
112                         //
113                         // Private data
114                         //
115                     
116                         /**
117                             Callback function to which all generated indications are sent for
118                             processing.
119                          */
120 kumpf           1.6     PEGASUS_INDICATION_CALLBACK_T _indicationCallback;
121                     
122                         /**
123                             Callback function to which all response chunks are sent for processing.
124                          */
125                         PEGASUS_RESPONSE_CHUNK_CALLBACK_T _responseChunkCallback;
126 kumpf           1.1 
127                         /**
128 carolann.graves 1.7         Callback function to be called upon detection of failure of a
129                             provider module.
130                          */
131                         PEGASUS_PROVIDERMODULEFAIL_CALLBACK_T _providerModuleFailCallback;
132                     
133                         /**
134 kumpf           1.1         The _providerAgentTable contains a ProviderAgentContainer entry for
135                             each of the Provider Agent processes for which a request has been
136                             processed.  ProviderAgentContainer objects are persistent; once one
137                             is created it is never deleted.
138                          */
139                         ProviderAgentTable _providerAgentTable;
140                         /**
141                             The _providerAgentTableMutex must be locked whenever the
142                             _providerAgentTable is accessed.
143                          */
144                         Mutex _providerAgentTableMutex;
145                     };
146                     
147                     PEGASUS_NAMESPACE_END
148                     
149                     #endif

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2