1 dj.gorey 1.14 //%2003////////////////////////////////////////////////////////////////////////
|
2 chip 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 // IBM Corp.; EMC Corporation, The Open Group.
|
7 chip 1.1 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to
10 // deal in the Software without restriction, including without limitation the
11 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12 // sell copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
|
14 schuur 1.3 //
|
15 chip 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
16 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
17 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
18 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
19 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 //
24 //==============================================================================
25 //
|
26 schuur 1.3 // Author: Adrian Schuur, schuur@de.ibm.com
|
27 chip 1.1 //
|
28 dj.gorey 1.12 // Modified By:
|
29 chip 1.1 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_CMPIProviderManager_h
33 #define Pegasus_CMPIProviderManager_h
34
35 #include <Pegasus/Common/Config.h>
|
36 schuur 1.3 #include <Pegasus/Common/HashTable.h>
37 #include <Pegasus/ProviderManager2/ProviderName.h>
|
38 chip 1.1 #include <Pegasus/ProviderManager2/ProviderManager.h>
|
39 kumpf 1.15 #include <Pegasus/Common/OperationContextInternal.h>
|
40 schuur 1.7
|
41 schuur 1.3 #include <Pegasus/Config/ConfigManager.h>
42 #include <Pegasus/Repository/CIMRepository.h>
|
43 schuur 1.8 #include <Pegasus/ProviderManager2/OperationResponseHandler.h>
|
44 chip 1.1
|
45 schuur 1.7 #include <Pegasus/ProviderManager2/CMPI/Linkage.h>
46
|
47 chip 1.1 PEGASUS_NAMESPACE_BEGIN
48
|
49 schuur 1.4 struct CMPI_SelectExp;
|
50 schuur 1.3
|
51 schuur 1.7 class PEGASUS_CMPIPM_LINKAGE CMPIProviderManager : public ProviderManager
|
52 chip 1.1 {
53 public:
|
54 dj.gorey 1.12 enum Mode {
|
55 schuur 1.3 CMPI_MODE,
56 CMPI_R_MODE,
57 CMPI_O_MODE
58 };
59
60 Mode getMode() { return mode; }
61 CMPIProviderManager(Mode=CMPI_MODE);
|
62 chip 1.1 virtual ~CMPIProviderManager(void);
|
63 dj.gorey 1.12
64 virtual Boolean insertProvider(const ProviderName & providerName,
|
65 schuur 1.3 const String &ns, const String &cn);
|
66 dj.gorey 1.12
|
67 dj.gorey 1.14 virtual Message * processMessage(Message * request);
|
68 chip 1.1
|
69 schuur 1.3 virtual void unload_idle_providers(void) ;
|
70 dj.gorey 1.12
|
71 schuur 1.3 struct indProvRecord {
72 indProvRecord() : enabled(false), count(1), handler(NULL) {}
73 Boolean enabled;
74 int count;
75 EnableIndicationsResponseHandler* handler;
76 };
77
78 struct indSelectRecord {
79 indSelectRecord() : eSelx(NULL) {}
80 CMPI_SelectExp *eSelx;
81 };
82
83 typedef HashTable<String,indProvRecord*, EqualFunc<String>,HashFunc<String> > IndProvTab;
84 typedef HashTable<String,indSelectRecord*,EqualFunc<String>,HashFunc<String> > IndSelectTab;
85 typedef HashTable<String,ProviderName,EqualFunc<String>,HashFunc<String> > ProvRegistrar;
86
87 static IndProvTab provTab;
88 static IndSelectTab selxTab;
89 static ProvRegistrar provReg;
|
90 dj.gorey 1.12
|
91 schuur 1.3 protected:
92 Mode mode;
93 CIMRepository *_repository;
94 String getFilter(CIMInstance &subscription);
95
|
96 dj.gorey 1.14 Message * handleUnsupportedRequest(const Message * message);
|
97 schuur 1.3
|
98 dj.gorey 1.14 Message * handleGetInstanceRequest(const Message * message);
99 Message * handleEnumerateInstancesRequest(const Message * message);
100 Message * handleEnumerateInstanceNamesRequest(const Message * message);
101 Message * handleCreateInstanceRequest(const Message * message);
102 Message * handleModifyInstanceRequest(const Message * message);
103 Message * handleDeleteInstanceRequest(const Message * message);
104
105 Message * handleExecQueryRequest(const Message * message);
106
107 Message * handleAssociatorsRequest(const Message * message);
108 Message * handleAssociatorNamesRequest(const Message * message);
109 Message * handleReferencesRequest(const Message * message);
110 Message * handleReferenceNamesRequest(const Message * message);
|
111 schuur 1.3 /*
|
112 dj.gorey 1.14 Message * handleGetPropertyRequest(const Message * message);
113 Message * handleSetPropertyRequest(const Message * message);
|
114 schuur 1.3 */
|
115 dj.gorey 1.14 Message * handleInvokeMethodRequest(const Message * message);
|
116 schuur 1.3
|
117 dj.gorey 1.14 Message * handleCreateSubscriptionRequest(const Message * message);
118 // Message * handleModifySubscriptionRequest(const Message * message);
119 Message * handleDeleteSubscriptionRequest(const Message * message);
120 Message * handleEnableIndicationsRequest(const Message * message);
121 Message * handleDisableIndicationsRequest(const Message * message);
|
122 schuur 1.3
123 // Not supported by CMPI
|
124 dj.gorey 1.14 // Message * handleConsumeIndicationRequest(const Message * message);
|
125 schuur 1.3
|
126 dj.gorey 1.14 Message * handleDisableModuleRequest(const Message * message);
127 Message * handleEnableModuleRequest(const Message * message);
128 Message * handleStopAllProvidersRequest(const Message * message);
|
129 chip 1.1
|
130 kumpf 1.15 ProviderName _resolveProviderName(const ProviderIdContainer & providerId);
|
131 chip 1.1 };
132
133 PEGASUS_NAMESPACE_END
134
135 #endif
|