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 //
21 // 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 //
34 kumpf 1.1 // Modified By:
35 //
36 //%/////////////////////////////////////////////////////////////////////////////
37
38
39 #include <Pegasus/Common/IPC.h>
40 #include <Pegasus/Common/OperationContext.h>
41 #include <Pegasus/Client/CIMClient.h>
42
43 #include "CIMOMHandleRep.h"
44
45 PEGASUS_NAMESPACE_BEGIN
46
47 /**
48 ClientCIMOMHandleRep is a CIMOMHandle implementation that communicates
49 with the CIM Server through the use of a CIMClient object. This
50 implementation is intended for use with Out-of-Process Providers, for
51 which communication with the CIM Server must be serialized over an
52 interprocess connection.
53 */
54 class ClientCIMOMHandleRep : public CIMOMHandleRep
55 kumpf 1.1 {
56 public:
57 ClientCIMOMHandleRep();
58 virtual ~ClientCIMOMHandleRep();
59
60 virtual CIMClass getClass(
61 const OperationContext & context,
62 const CIMNamespaceName& nameSpace,
63 const CIMName& className,
64 Boolean localOnly,
65 Boolean includeQualifiers,
66 Boolean includeClassOrigin,
67 const CIMPropertyList& propertyList);
68
69 virtual Array<CIMClass> enumerateClasses(
70 const OperationContext & context,
71 const CIMNamespaceName& nameSpace,
72 const CIMName& className,
73 Boolean deepInheritance,
74 Boolean localOnly,
75 Boolean includeQualifiers,
76 kumpf 1.1 Boolean includeClassOrigin);
77
78 virtual Array<CIMName> enumerateClassNames(
79 const OperationContext & context,
80 const CIMNamespaceName& nameSpace,
81 const CIMName& className,
82 Boolean deepInheritance);
83
84 virtual void createClass(
85 const OperationContext & context,
86 const CIMNamespaceName& nameSpace,
87 const CIMClass& newClass);
88
89 virtual void modifyClass(
90 const OperationContext & context,
91 const CIMNamespaceName& nameSpace,
92 const CIMClass& modifiedClass);
93
94 virtual void deleteClass(
95 const OperationContext & context,
96 const CIMNamespaceName& nameSpace,
97 kumpf 1.1 const CIMName& className);
98
99 virtual CIMInstance getInstance(
100 const OperationContext & context,
101 const CIMNamespaceName& nameSpace,
102 const CIMObjectPath& instanceName,
103 Boolean localOnly,
104 Boolean includeQualifiers,
105 Boolean includeClassOrigin,
106 const CIMPropertyList& propertyList);
107
108 virtual Array<CIMInstance> enumerateInstances(
109 const OperationContext & context,
110 const CIMNamespaceName& nameSpace,
111 const CIMName& className,
112 Boolean deepInheritance,
113 Boolean localOnly,
114 Boolean includeQualifiers,
115 Boolean includeClassOrigin,
116 const CIMPropertyList& propertyList);
117
118 kumpf 1.1 virtual Array<CIMObjectPath> enumerateInstanceNames(
119 const OperationContext & context,
120 const CIMNamespaceName& nameSpace,
121 const CIMName& className);
122
123 virtual CIMObjectPath createInstance(
124 const OperationContext & context,
125 const CIMNamespaceName& nameSpace,
126 const CIMInstance& newInstance);
127
128 virtual void modifyInstance(
129 const OperationContext & context,
130 const CIMNamespaceName& nameSpace,
131 const CIMInstance& modifiedInstance,
132 Boolean includeQualifiers,
133 const CIMPropertyList& propertyList);
134
135 virtual void deleteInstance(
136 const OperationContext & context,
137 const CIMNamespaceName& nameSpace,
138 const CIMObjectPath& instanceName);
139 kumpf 1.1
140 virtual Array<CIMObject> execQuery(
141 const OperationContext & context,
142 const CIMNamespaceName& nameSpace,
143 const String& queryLanguage,
144 const String& query);
145
146 virtual Array<CIMObject> associators(
147 const OperationContext & context,
148 const CIMNamespaceName& nameSpace,
149 const CIMObjectPath& objectName,
150 const CIMName& assocClass,
151 const CIMName& resultClass,
152 const String& role,
153 const String& resultRole,
154 Boolean includeQualifiers,
155 Boolean includeClassOrigin,
156 const CIMPropertyList& propertyList);
157
158 virtual Array<CIMObjectPath> associatorNames(
159 const OperationContext & context,
160 kumpf 1.1 const CIMNamespaceName& nameSpace,
161 const CIMObjectPath& objectName,
162 const CIMName& assocClass,
163 const CIMName& resultClass,
164 const String& role,
165 const String& resultRole);
166
167 virtual Array<CIMObject> references(
168 const OperationContext & context,
169 const CIMNamespaceName& nameSpace,
170 const CIMObjectPath& objectName,
171 const CIMName& resultClass,
172 const String& role,
173 Boolean includeQualifiers,
174 Boolean includeClassOrigin,
175 const CIMPropertyList& propertyList);
176
177 virtual Array<CIMObjectPath> referenceNames(
178 const OperationContext & context,
179 const CIMNamespaceName& nameSpace,
180 const CIMObjectPath& objectName,
181 kumpf 1.1 const CIMName& resultClass,
182 const String& role);
183
184 // property operations
185 virtual CIMValue getProperty(
186 const OperationContext & context,
187 const CIMNamespaceName& nameSpace,
188 const CIMObjectPath& instanceName,
189 const CIMName& propertyName);
190
191 virtual void setProperty(
192 const OperationContext & context,
193 const CIMNamespaceName& nameSpace,
194 const CIMObjectPath& instanceName,
195 const CIMName& propertyName,
196 const CIMValue& newValue);
197
198 virtual CIMValue invokeMethod(
199 const OperationContext & context,
200 const CIMNamespaceName& nameSpace,
201 const CIMObjectPath& instanceName,
202 kumpf 1.1 const CIMName& methodName,
203 const Array<CIMParamValue>& inParameters,
204 Array<CIMParamValue>& outParameters);
205
206 virtual OperationContext getResponseContext();
207
208 #ifdef PEGASUS_OS_OS400
209 // This method has no meaning for CIMClient-based handles
210 virtual void setOS400ProfileHandle(const char* profileHandle) {}
211 #endif
212
213 private:
214 // Unimplemented
215 ClientCIMOMHandleRep(const ClientCIMOMHandleRep& rep);
216 // Unimplemented
217 ClientCIMOMHandleRep& operator=(const ClientCIMOMHandleRep &);
218
219 CIMClient* _client;
220 Mutex _clientMutex;
221 };
222
223 kumpf 1.1 PEGASUS_NAMESPACE_END
|