1 karl 1.17 //%2005////////////////////////////////////////////////////////////////////////
|
2 kumpf 1.1 //
|
3 karl 1.14 // 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 karl 1.3 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.14 // 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.17 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 kumpf 1.1 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy
13 // of this software and associated documentation files (the "Software"), to
14 // deal in the Software without restriction, including without limitation the
15 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16 // sell copies of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
|
18 david.dillard 1.19 //
|
19 kumpf 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
20 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
21 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
22 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
23 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 //==============================================================================
29 //
30 // Author: Jair Santos, Hewlett-Packard Company (jair.santos@hp.com)
31 //
|
32 david.dillard 1.19 // Modified By: Dan Gorey (djgorey@us.ibm.com)
33 // Marek Szermutzky (MSzermutzky@de.ibm.com) for PEP#139 Stage1
34 // Robert Kieninger, IBM (kieningr@de.ibm.com) for Bug#667
35 // Amit K Arora, IBM (amita@in.ibm.com) for Bug#2040
36 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
37 // Willis White, IBM (whiwill@us.ibm.com)
38 // David Dillard, VERITAS Software Corp.
39 // (david.dillard@veritas.com)
|
40 kumpf 1.1 //
41 //%/////////////////////////////////////////////////////////////////////////////
42
43 #ifndef Pegasus_ClientRep_h
44 #define Pegasus_ClientRep_h
45
46 #include <Pegasus/Common/Config.h>
47 #include <Pegasus/Common/String.h>
48 #include <Pegasus/Common/CIMName.h>
49 #include <Pegasus/Common/SSLContext.h>
50 #include <Pegasus/Common/CIMObject.h>
51 #include <Pegasus/Common/CIMClass.h>
52 #include <Pegasus/Common/CIMInstance.h>
53 #include <Pegasus/Common/CIMObjectPath.h>
54 #include <Pegasus/Common/CIMValue.h>
55 #include <Pegasus/Common/CIMParamValue.h>
56 #include <Pegasus/Common/CIMPropertyList.h>
57 #include <Pegasus/Common/CIMQualifierDecl.h>
58 #include <Pegasus/Common/Exception.h>
59 #include <Pegasus/Common/Constants.h>
60 #include <Pegasus/Common/FileSystem.h>
61 kumpf 1.1 #include <Pegasus/Common/Monitor.h>
62 #include <Pegasus/Common/HTTPConnector.h>
63 #include <Pegasus/Common/CIMMessage.h>
64 #include <Pegasus/Common/HTTPConnection.h>
65 #include <Pegasus/Common/XmlWriter.h>
66 #include <Pegasus/Common/TimeValue.h>
|
67 kumpf 1.10 #include <Pegasus/Common/AutoPtr.h>
|
68 kumpf 1.1 #include <Pegasus/Client/CIMClientException.h>
69 #include <Pegasus/Client/Linkage.h>
70 #include <Pegasus/Client/CIMClientInterface.h>
71
72 #include "CIMOperationResponseDecoder.h"
73 #include "CIMOperationRequestEncoder.h"
|
74 w.white 1.16 #include "ClientPerfDataStore.h"
75
|
76 kumpf 1.1
77 PEGASUS_NAMESPACE_BEGIN
78
79 ///////////////////////////////////////////////////////////////////////////////
80 //
81 // CIMClientRep
82 //
83 ///////////////////////////////////////////////////////////////////////////////
84 class CIMClientRep : public CIMClientInterface
85 {
86 public:
87
88 // Timeout value defines the time the CIMClient will wait for a response
89 // to an outstanding request. If a request times out, the connection
90 // gets reset (disconnected and reconnected).
91 CIMClientRep(Uint32 timeoutMilliseconds = DEFAULT_TIMEOUT_MILLISECONDS);
92
93 ~CIMClientRep();
94
95 virtual void handleEnqueue();
96
97 kumpf 1.1 virtual Uint32 getTimeout() const
98 {
99 return _timeoutMilliseconds;
100 }
101
102 virtual void setTimeout(Uint32 timeoutMilliseconds)
103 {
104 _timeoutMilliseconds = timeoutMilliseconds;
105 }
106
107 // l10n start
108 AcceptLanguages getRequestAcceptLanguages() const;
109 ContentLanguages getRequestContentLanguages() const;
110 ContentLanguages getResponseContentLanguages() const;
|
111 chuck 1.8 void setRequestAcceptLanguages(const AcceptLanguages& langs);
112 void setRequestContentLanguages(const ContentLanguages& langs);
|
113 kumpf 1.1 void setRequestDefaultLanguages();
114 // l10n end
115
116 void connect(
117 const String& host,
118 const Uint32 portNumber,
119 const String& userName,
120 const String& password
121 );
122
123 void connect(
124 const String& host,
125 const Uint32 portNumber,
126 const SSLContext& sslContext,
127 const String& userName,
128 const String& password
129 );
130
131 void connectLocal();
132
133 void disconnect();
134 kumpf 1.1
|
135 david.dillard 1.19 Boolean isConnected() const throw();
|
136 marek 1.9
|
137 kumpf 1.1 virtual CIMClass getClass(
138 const CIMNamespaceName& nameSpace,
139 const CIMName& className,
140 Boolean localOnly = true,
141 Boolean includeQualifiers = true,
142 Boolean includeClassOrigin = false,
143 const CIMPropertyList& propertyList = CIMPropertyList()
144 );
145
146 virtual CIMInstance getInstance(
147 const CIMNamespaceName& nameSpace,
148 const CIMObjectPath& instanceName,
149 Boolean localOnly = true,
150 Boolean includeQualifiers = false,
151 Boolean includeClassOrigin = false,
152 const CIMPropertyList& propertyList = CIMPropertyList()
153 );
154
155 virtual void deleteClass(
156 const CIMNamespaceName& nameSpace,
157 const CIMName& className
158 kumpf 1.1 );
159
160 virtual void deleteInstance(
161 const CIMNamespaceName& nameSpace,
162 const CIMObjectPath& instanceName
163 );
164
165 virtual void createClass(
166 const CIMNamespaceName& nameSpace,
167 const CIMClass& newClass
168 );
169
170 virtual CIMObjectPath createInstance(
171 const CIMNamespaceName& nameSpace,
172 const CIMInstance& newInstance
173 );
174
175 virtual void modifyClass(
176 const CIMNamespaceName& nameSpace,
177 const CIMClass& modifiedClass
178 );
179 kumpf 1.1
180 virtual void modifyInstance(
181 const CIMNamespaceName& nameSpace,
182 const CIMInstance& modifiedInstance,
183 Boolean includeQualifiers = true,
184 const CIMPropertyList& propertyList = CIMPropertyList()
185 );
186
187 virtual Array<CIMClass> enumerateClasses(
188 const CIMNamespaceName& nameSpace,
189 const CIMName& className = CIMName(),
190 Boolean deepInheritance = false,
191 Boolean localOnly = true,
192 Boolean includeQualifiers = true,
193 Boolean includeClassOrigin = false
194 );
195
196 virtual Array<CIMName> enumerateClassNames(
197 const CIMNamespaceName& nameSpace,
198 const CIMName& className = CIMName(),
199 Boolean deepInheritance = false
200 kumpf 1.1 );
201
202 virtual Array<CIMInstance> enumerateInstances(
203 const CIMNamespaceName& nameSpace,
204 const CIMName& className,
205 Boolean deepInheritance = true,
206 Boolean localOnly = true,
207 Boolean includeQualifiers = false,
208 Boolean includeClassOrigin = false,
209 const CIMPropertyList& propertyList = CIMPropertyList()
210 );
211
212 virtual Array<CIMObjectPath> enumerateInstanceNames(
213 const CIMNamespaceName& nameSpace,
214 const CIMName& className
215 );
216
217 virtual Array<CIMObject> execQuery(
218 const CIMNamespaceName& nameSpace,
219 const String& queryLanguage,
220 const String& query
221 kumpf 1.1 );
222
223 virtual Array<CIMObject> associators(
224 const CIMNamespaceName& nameSpace,
225 const CIMObjectPath& objectName,
226 const CIMName& assocClass = CIMName(),
227 const CIMName& resultClass = CIMName(),
228 const String& role = String::EMPTY,
229 const String& resultRole = String::EMPTY,
230 Boolean includeQualifiers = false,
231 Boolean includeClassOrigin = false,
232 const CIMPropertyList& propertyList = CIMPropertyList()
233 );
234
235 virtual Array<CIMObjectPath> associatorNames(
236 const CIMNamespaceName& nameSpace,
237 const CIMObjectPath& objectName,
238 const CIMName& assocClass = CIMName(),
239 const CIMName& resultClass = CIMName(),
240 const String& role = String::EMPTY,
241 const String& resultRole = String::EMPTY
242 kumpf 1.1 );
243
244 virtual Array<CIMObject> references(
245 const CIMNamespaceName& nameSpace,
246 const CIMObjectPath& objectName,
247 const CIMName& resultClass = CIMName(),
248 const String& role = String::EMPTY,
249 Boolean includeQualifiers = false,
250 Boolean includeClassOrigin = false,
251 const CIMPropertyList& propertyList = CIMPropertyList()
252 );
253
254 virtual Array<CIMObjectPath> referenceNames(
255 const CIMNamespaceName& nameSpace,
256 const CIMObjectPath& objectName,
257 const CIMName& resultClass = CIMName(),
258 const String& role = String::EMPTY
259 );
260
261 virtual CIMValue getProperty(
262 const CIMNamespaceName& nameSpace,
263 kumpf 1.1 const CIMObjectPath& instanceName,
264 const CIMName& propertyName
265 );
266
267 virtual void setProperty(
268 const CIMNamespaceName& nameSpace,
269 const CIMObjectPath& instanceName,
270 const CIMName& propertyName,
271 const CIMValue& newValue = CIMValue()
272 );
273
274 virtual CIMQualifierDecl getQualifier(
275 const CIMNamespaceName& nameSpace,
276 const CIMName& qualifierName
277 );
278
279 virtual void setQualifier(
280 const CIMNamespaceName& nameSpace,
281 const CIMQualifierDecl& qualifierDeclaration
282 );
283
284 kumpf 1.1 virtual void deleteQualifier(
285 const CIMNamespaceName& nameSpace,
286 const CIMName& qualifierName
287 );
288
289 virtual Array<CIMQualifierDecl> enumerateQualifiers(
290 const CIMNamespaceName& nameSpace
291 );
292
293 virtual CIMValue invokeMethod(
294 const CIMNamespaceName& nameSpace,
295 const CIMObjectPath& instanceName,
296 const CIMName& methodName,
297 const Array<CIMParamValue>& inParameters,
298 Array<CIMParamValue>& outParameters
299 );
300
|
301 w.white 1.18 void registerClientOpPerformanceDataHandler(
302 ClientOpPerformanceDataHandler & handler);
|
303 david.dillard 1.19
|
304 w.white 1.18 void deregisterClientOpPerformanceDataHandler();
305
|
306 kumpf 1.1 private:
307
|
308 a.arora 1.13 void _connect();
|
309 kumpf 1.1
|
310 kumpf 1.4 void _disconnect();
311
|
312 kumpf 1.1 void _reconnect();
313
314 Message* _doRequest(
|
315 a.arora 1.12 AutoPtr<CIMRequestMessage>& request,
|
316 kumpf 1.1 const Uint32 expectedResponseMessageType);
317
318 String _getLocalHostName();
|
319 a.arora 1.12 AutoPtr<Monitor> _monitor;
320 AutoPtr<HTTPConnector> _httpConnector;
|
321 denise.eckstein 1.20 HTTPConnection* _httpConnection;
|
322 r.kieninger 1.11
|
323 dj.gorey 1.5
|
324 kumpf 1.1 Uint32 _timeoutMilliseconds;
325 Boolean _connected;
|
326 a.arora 1.12 AutoPtr<CIMOperationResponseDecoder> _responseDecoder;
327 AutoPtr<CIMOperationRequestEncoder> _requestEncoder;
|
328 kumpf 1.1 ClientAuthenticator _authenticator;
329 String _connectHost;
330 Uint32 _connectPortNumber;
|
331 kumpf 1.10 AutoPtr<SSLContext> _connectSSLContext;
|
332 kumpf 1.1
333 // l10n
334 AcceptLanguages requestAcceptLanguages;
335 ContentLanguages requestContentLanguages;
336 ContentLanguages responseContentLanguages;
|
337 marek 1.7
|
338 david.dillard 1.19 // mszer : Additions Stage1 PEP#139
339 void compareObjectPathtoCurrentConnection(const CIMObjectPath& obj);
|
340 kumpf 1.1 };
341
342 PEGASUS_NAMESPACE_END
343
344 #endif /* Pegasus_ClientRep_h */
|