1 karl 1.23 //%2006////////////////////////////////////////////////////////////////////////
|
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 karl 1.23 // 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.23 //
|
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: Jair Santos, Hewlett-Packard Company (jair.santos@hp.com)
33 //
|
34 david.dillard 1.19 // Modified By: Dan Gorey (djgorey@us.ibm.com)
35 // Marek Szermutzky (MSzermutzky@de.ibm.com) for PEP#139 Stage1
36 // Robert Kieninger, IBM (kieningr@de.ibm.com) for Bug#667
37 // Amit K Arora, IBM (amita@in.ibm.com) for Bug#2040
38 // Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
39 // Willis White, IBM (whiwill@us.ibm.com)
40 // David Dillard, VERITAS Software Corp.
41 // (david.dillard@veritas.com)
|
42 kumpf 1.1 //
43 //%/////////////////////////////////////////////////////////////////////////////
44
45 #ifndef Pegasus_ClientRep_h
46 #define Pegasus_ClientRep_h
47
48 #include <Pegasus/Common/Config.h>
49 #include <Pegasus/Common/String.h>
50 #include <Pegasus/Common/CIMName.h>
51 #include <Pegasus/Common/SSLContext.h>
52 #include <Pegasus/Common/CIMObject.h>
53 #include <Pegasus/Common/CIMClass.h>
54 #include <Pegasus/Common/CIMInstance.h>
55 #include <Pegasus/Common/CIMObjectPath.h>
56 #include <Pegasus/Common/CIMValue.h>
57 #include <Pegasus/Common/CIMParamValue.h>
58 #include <Pegasus/Common/CIMPropertyList.h>
59 #include <Pegasus/Common/CIMQualifierDecl.h>
60 #include <Pegasus/Common/Exception.h>
61 #include <Pegasus/Common/Constants.h>
62 #include <Pegasus/Common/FileSystem.h>
63 kumpf 1.1 #include <Pegasus/Common/Monitor.h>
64 #include <Pegasus/Common/HTTPConnector.h>
65 #include <Pegasus/Common/CIMMessage.h>
66 #include <Pegasus/Common/HTTPConnection.h>
67 #include <Pegasus/Common/XmlWriter.h>
68 #include <Pegasus/Common/TimeValue.h>
|
69 kumpf 1.10 #include <Pegasus/Common/AutoPtr.h>
|
70 kumpf 1.1 #include <Pegasus/Client/CIMClientException.h>
71 #include <Pegasus/Client/Linkage.h>
72 #include <Pegasus/Client/CIMClientInterface.h>
|
73 a.dunfey 1.22 #include <Pegasus/Client/ClientPerfDataStore.h>
|
74 kumpf 1.1
75 #include "CIMOperationResponseDecoder.h"
76 #include "CIMOperationRequestEncoder.h"
|
77 w.white 1.16
|
78 kumpf 1.1
79 PEGASUS_NAMESPACE_BEGIN
80
81 ///////////////////////////////////////////////////////////////////////////////
82 //
83 // CIMClientRep
84 //
85 ///////////////////////////////////////////////////////////////////////////////
|
86 mike 1.24 class PEGASUS_CLIENT_LINKAGE CIMClientRep : public CIMClientInterface
|
87 kumpf 1.1 {
88 public:
89
90 // Timeout value defines the time the CIMClient will wait for a response
91 // to an outstanding request. If a request times out, the connection
92 // gets reset (disconnected and reconnected).
93 CIMClientRep(Uint32 timeoutMilliseconds = DEFAULT_TIMEOUT_MILLISECONDS);
94
95 ~CIMClientRep();
96
97 virtual void handleEnqueue();
98
99 virtual Uint32 getTimeout() const
100 {
101 return _timeoutMilliseconds;
102 }
103
104 virtual void setTimeout(Uint32 timeoutMilliseconds)
105 {
106 _timeoutMilliseconds = timeoutMilliseconds;
107 }
108 kumpf 1.1
109 // l10n start
|
110 kumpf 1.21 AcceptLanguageList getRequestAcceptLanguages() const;
111 ContentLanguageList getRequestContentLanguages() const;
112 ContentLanguageList getResponseContentLanguages() const;
113 void setRequestAcceptLanguages(const AcceptLanguageList& langs);
114 void setRequestContentLanguages(const ContentLanguageList& langs);
|
115 kumpf 1.1 void setRequestDefaultLanguages();
116 // l10n end
117
118 void connect(
119 const String& host,
120 const Uint32 portNumber,
121 const String& userName,
122 const String& password
123 );
124
125 void connect(
126 const String& host,
127 const Uint32 portNumber,
128 const SSLContext& sslContext,
129 const String& userName,
130 const String& password
131 );
132
133 void connectLocal();
134
135 void disconnect();
136 kumpf 1.1
|
137 david.dillard 1.19 Boolean isConnected() const throw();
|
138 marek 1.9
|
139 kumpf 1.1 virtual CIMClass getClass(
140 const CIMNamespaceName& nameSpace,
141 const CIMName& className,
142 Boolean localOnly = true,
143 Boolean includeQualifiers = true,
144 Boolean includeClassOrigin = false,
145 const CIMPropertyList& propertyList = CIMPropertyList()
146 );
147
148 virtual CIMInstance getInstance(
149 const CIMNamespaceName& nameSpace,
150 const CIMObjectPath& instanceName,
151 Boolean localOnly = true,
152 Boolean includeQualifiers = false,
153 Boolean includeClassOrigin = false,
154 const CIMPropertyList& propertyList = CIMPropertyList()
155 );
156
157 virtual void deleteClass(
158 const CIMNamespaceName& nameSpace,
159 const CIMName& className
160 kumpf 1.1 );
161
162 virtual void deleteInstance(
163 const CIMNamespaceName& nameSpace,
164 const CIMObjectPath& instanceName
165 );
166
167 virtual void createClass(
168 const CIMNamespaceName& nameSpace,
169 const CIMClass& newClass
170 );
171
172 virtual CIMObjectPath createInstance(
173 const CIMNamespaceName& nameSpace,
174 const CIMInstance& newInstance
175 );
176
177 virtual void modifyClass(
178 const CIMNamespaceName& nameSpace,
179 const CIMClass& modifiedClass
180 );
181 kumpf 1.1
182 virtual void modifyInstance(
183 const CIMNamespaceName& nameSpace,
184 const CIMInstance& modifiedInstance,
185 Boolean includeQualifiers = true,
186 const CIMPropertyList& propertyList = CIMPropertyList()
187 );
188
189 virtual Array<CIMClass> enumerateClasses(
190 const CIMNamespaceName& nameSpace,
191 const CIMName& className = CIMName(),
192 Boolean deepInheritance = false,
193 Boolean localOnly = true,
194 Boolean includeQualifiers = true,
195 Boolean includeClassOrigin = false
196 );
197
198 virtual Array<CIMName> enumerateClassNames(
199 const CIMNamespaceName& nameSpace,
200 const CIMName& className = CIMName(),
201 Boolean deepInheritance = false
202 kumpf 1.1 );
203
204 virtual Array<CIMInstance> enumerateInstances(
205 const CIMNamespaceName& nameSpace,
206 const CIMName& className,
207 Boolean deepInheritance = true,
208 Boolean localOnly = true,
209 Boolean includeQualifiers = false,
210 Boolean includeClassOrigin = false,
211 const CIMPropertyList& propertyList = CIMPropertyList()
212 );
213
214 virtual Array<CIMObjectPath> enumerateInstanceNames(
215 const CIMNamespaceName& nameSpace,
216 const CIMName& className
217 );
218
219 virtual Array<CIMObject> execQuery(
220 const CIMNamespaceName& nameSpace,
221 const String& queryLanguage,
222 const String& query
223 kumpf 1.1 );
224
225 virtual Array<CIMObject> associators(
226 const CIMNamespaceName& nameSpace,
227 const CIMObjectPath& objectName,
228 const CIMName& assocClass = CIMName(),
229 const CIMName& resultClass = CIMName(),
230 const String& role = String::EMPTY,
231 const String& resultRole = String::EMPTY,
232 Boolean includeQualifiers = false,
233 Boolean includeClassOrigin = false,
234 const CIMPropertyList& propertyList = CIMPropertyList()
235 );
236
237 virtual Array<CIMObjectPath> associatorNames(
238 const CIMNamespaceName& nameSpace,
239 const CIMObjectPath& objectName,
240 const CIMName& assocClass = CIMName(),
241 const CIMName& resultClass = CIMName(),
242 const String& role = String::EMPTY,
243 const String& resultRole = String::EMPTY
244 kumpf 1.1 );
245
246 virtual Array<CIMObject> references(
247 const CIMNamespaceName& nameSpace,
248 const CIMObjectPath& objectName,
249 const CIMName& resultClass = CIMName(),
250 const String& role = String::EMPTY,
251 Boolean includeQualifiers = false,
252 Boolean includeClassOrigin = false,
253 const CIMPropertyList& propertyList = CIMPropertyList()
254 );
255
256 virtual Array<CIMObjectPath> referenceNames(
257 const CIMNamespaceName& nameSpace,
258 const CIMObjectPath& objectName,
259 const CIMName& resultClass = CIMName(),
260 const String& role = String::EMPTY
261 );
262
263 virtual CIMValue getProperty(
264 const CIMNamespaceName& nameSpace,
265 kumpf 1.1 const CIMObjectPath& instanceName,
266 const CIMName& propertyName
267 );
268
269 virtual void setProperty(
270 const CIMNamespaceName& nameSpace,
271 const CIMObjectPath& instanceName,
272 const CIMName& propertyName,
273 const CIMValue& newValue = CIMValue()
274 );
275
276 virtual CIMQualifierDecl getQualifier(
277 const CIMNamespaceName& nameSpace,
278 const CIMName& qualifierName
279 );
280
281 virtual void setQualifier(
282 const CIMNamespaceName& nameSpace,
283 const CIMQualifierDecl& qualifierDeclaration
284 );
285
286 kumpf 1.1 virtual void deleteQualifier(
287 const CIMNamespaceName& nameSpace,
288 const CIMName& qualifierName
289 );
290
291 virtual Array<CIMQualifierDecl> enumerateQualifiers(
292 const CIMNamespaceName& nameSpace
293 );
294
295 virtual CIMValue invokeMethod(
296 const CIMNamespaceName& nameSpace,
297 const CIMObjectPath& instanceName,
298 const CIMName& methodName,
299 const Array<CIMParamValue>& inParameters,
300 Array<CIMParamValue>& outParameters
301 );
302
|
303 w.white 1.18 void registerClientOpPerformanceDataHandler(
304 ClientOpPerformanceDataHandler & handler);
|
305 david.dillard 1.19
|
306 w.white 1.18 void deregisterClientOpPerformanceDataHandler();
307
|
308 kumpf 1.1 private:
309
|
310 a.arora 1.13 void _connect();
|
311 kumpf 1.1
|
312 kumpf 1.4 void _disconnect();
313
|
314 kumpf 1.1 void _reconnect();
315
316 Message* _doRequest(
|
317 a.arora 1.12 AutoPtr<CIMRequestMessage>& request,
|
318 kumpf 1.1 const Uint32 expectedResponseMessageType);
319
320 String _getLocalHostName();
|
321 a.arora 1.12 AutoPtr<Monitor> _monitor;
322 AutoPtr<HTTPConnector> _httpConnector;
|
323 denise.eckstein 1.20 HTTPConnection* _httpConnection;
|
324 r.kieninger 1.11
|
325 dj.gorey 1.5
|
326 kumpf 1.1 Uint32 _timeoutMilliseconds;
327 Boolean _connected;
|
328 a.arora 1.12 AutoPtr<CIMOperationResponseDecoder> _responseDecoder;
329 AutoPtr<CIMOperationRequestEncoder> _requestEncoder;
|
330 kumpf 1.1 ClientAuthenticator _authenticator;
331 String _connectHost;
332 Uint32 _connectPortNumber;
|
333 kumpf 1.10 AutoPtr<SSLContext> _connectSSLContext;
|
334 a.dunfey 1.22 ClientPerfDataStore perfDataStore;
|
335 kumpf 1.1
336 // l10n
|
337 kumpf 1.21 AcceptLanguageList requestAcceptLanguages;
338 ContentLanguageList requestContentLanguages;
339 ContentLanguageList responseContentLanguages;
|
340 marek 1.7
|
341 david.dillard 1.19 // mszer : Additions Stage1 PEP#139
342 void compareObjectPathtoCurrentConnection(const CIMObjectPath& obj);
|
343 kumpf 1.1 };
344
345 PEGASUS_NAMESPACE_END
346
347 #endif /* Pegasus_ClientRep_h */
|