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 marek 1.25 if ((_connected) && (_httpConnection != 0))
108 _httpConnection->setSocketWriteTimeout(_timeoutMilliseconds/1000+1);
|
109 kumpf 1.1 }
110
111 // l10n start
|
112 kumpf 1.21 AcceptLanguageList getRequestAcceptLanguages() const;
113 ContentLanguageList getRequestContentLanguages() const;
114 ContentLanguageList getResponseContentLanguages() const;
115 void setRequestAcceptLanguages(const AcceptLanguageList& langs);
116 void setRequestContentLanguages(const ContentLanguageList& langs);
|
117 kumpf 1.1 void setRequestDefaultLanguages();
118 // l10n end
119
120 void connect(
121 const String& host,
122 const Uint32 portNumber,
123 const String& userName,
124 const String& password
125 );
126
127 void connect(
128 const String& host,
129 const Uint32 portNumber,
130 const SSLContext& sslContext,
131 const String& userName,
132 const String& password
133 );
134
135 void connectLocal();
136
137 void disconnect();
138 kumpf 1.1
|
139 david.dillard 1.19 Boolean isConnected() const throw();
|
140 marek 1.9
|
141 kumpf 1.1 virtual CIMClass getClass(
142 const CIMNamespaceName& nameSpace,
143 const CIMName& className,
144 Boolean localOnly = true,
145 Boolean includeQualifiers = true,
146 Boolean includeClassOrigin = false,
147 const CIMPropertyList& propertyList = CIMPropertyList()
148 );
149
150 virtual CIMInstance getInstance(
151 const CIMNamespaceName& nameSpace,
152 const CIMObjectPath& instanceName,
153 Boolean localOnly = true,
154 Boolean includeQualifiers = false,
155 Boolean includeClassOrigin = false,
156 const CIMPropertyList& propertyList = CIMPropertyList()
157 );
158
159 virtual void deleteClass(
160 const CIMNamespaceName& nameSpace,
161 const CIMName& className
162 kumpf 1.1 );
163
164 virtual void deleteInstance(
165 const CIMNamespaceName& nameSpace,
166 const CIMObjectPath& instanceName
167 );
168
169 virtual void createClass(
170 const CIMNamespaceName& nameSpace,
171 const CIMClass& newClass
172 );
173
174 virtual CIMObjectPath createInstance(
175 const CIMNamespaceName& nameSpace,
176 const CIMInstance& newInstance
177 );
178
179 virtual void modifyClass(
180 const CIMNamespaceName& nameSpace,
181 const CIMClass& modifiedClass
182 );
183 kumpf 1.1
184 virtual void modifyInstance(
185 const CIMNamespaceName& nameSpace,
186 const CIMInstance& modifiedInstance,
187 Boolean includeQualifiers = true,
188 const CIMPropertyList& propertyList = CIMPropertyList()
189 );
190
191 virtual Array<CIMClass> enumerateClasses(
192 const CIMNamespaceName& nameSpace,
193 const CIMName& className = CIMName(),
194 Boolean deepInheritance = false,
195 Boolean localOnly = true,
196 Boolean includeQualifiers = true,
197 Boolean includeClassOrigin = false
198 );
199
200 virtual Array<CIMName> enumerateClassNames(
201 const CIMNamespaceName& nameSpace,
202 const CIMName& className = CIMName(),
203 Boolean deepInheritance = false
204 kumpf 1.1 );
205
206 virtual Array<CIMInstance> enumerateInstances(
207 const CIMNamespaceName& nameSpace,
208 const CIMName& className,
209 Boolean deepInheritance = true,
210 Boolean localOnly = true,
211 Boolean includeQualifiers = false,
212 Boolean includeClassOrigin = false,
213 const CIMPropertyList& propertyList = CIMPropertyList()
214 );
215
216 virtual Array<CIMObjectPath> enumerateInstanceNames(
217 const CIMNamespaceName& nameSpace,
218 const CIMName& className
219 );
220
221 virtual Array<CIMObject> execQuery(
222 const CIMNamespaceName& nameSpace,
223 const String& queryLanguage,
224 const String& query
225 kumpf 1.1 );
226
227 virtual Array<CIMObject> associators(
228 const CIMNamespaceName& nameSpace,
229 const CIMObjectPath& objectName,
230 const CIMName& assocClass = CIMName(),
231 const CIMName& resultClass = CIMName(),
232 const String& role = String::EMPTY,
233 const String& resultRole = String::EMPTY,
234 Boolean includeQualifiers = false,
235 Boolean includeClassOrigin = false,
236 const CIMPropertyList& propertyList = CIMPropertyList()
237 );
238
239 virtual Array<CIMObjectPath> associatorNames(
240 const CIMNamespaceName& nameSpace,
241 const CIMObjectPath& objectName,
242 const CIMName& assocClass = CIMName(),
243 const CIMName& resultClass = CIMName(),
244 const String& role = String::EMPTY,
245 const String& resultRole = String::EMPTY
246 kumpf 1.1 );
247
248 virtual Array<CIMObject> references(
249 const CIMNamespaceName& nameSpace,
250 const CIMObjectPath& objectName,
251 const CIMName& resultClass = CIMName(),
252 const String& role = String::EMPTY,
253 Boolean includeQualifiers = false,
254 Boolean includeClassOrigin = false,
255 const CIMPropertyList& propertyList = CIMPropertyList()
256 );
257
258 virtual Array<CIMObjectPath> referenceNames(
259 const CIMNamespaceName& nameSpace,
260 const CIMObjectPath& objectName,
261 const CIMName& resultClass = CIMName(),
262 const String& role = String::EMPTY
263 );
264
265 virtual CIMValue getProperty(
266 const CIMNamespaceName& nameSpace,
267 kumpf 1.1 const CIMObjectPath& instanceName,
268 const CIMName& propertyName
269 );
270
271 virtual void setProperty(
272 const CIMNamespaceName& nameSpace,
273 const CIMObjectPath& instanceName,
274 const CIMName& propertyName,
275 const CIMValue& newValue = CIMValue()
276 );
277
278 virtual CIMQualifierDecl getQualifier(
279 const CIMNamespaceName& nameSpace,
280 const CIMName& qualifierName
281 );
282
283 virtual void setQualifier(
284 const CIMNamespaceName& nameSpace,
285 const CIMQualifierDecl& qualifierDeclaration
286 );
287
288 kumpf 1.1 virtual void deleteQualifier(
289 const CIMNamespaceName& nameSpace,
290 const CIMName& qualifierName
291 );
292
293 virtual Array<CIMQualifierDecl> enumerateQualifiers(
294 const CIMNamespaceName& nameSpace
295 );
296
297 virtual CIMValue invokeMethod(
298 const CIMNamespaceName& nameSpace,
299 const CIMObjectPath& instanceName,
300 const CIMName& methodName,
301 const Array<CIMParamValue>& inParameters,
302 Array<CIMParamValue>& outParameters
303 );
304
|
305 w.white 1.18 void registerClientOpPerformanceDataHandler(
306 ClientOpPerformanceDataHandler & handler);
|
307 david.dillard 1.19
|
308 w.white 1.18 void deregisterClientOpPerformanceDataHandler();
309
|
310 kumpf 1.1 private:
311
|
312 a.arora 1.13 void _connect();
|
313 kumpf 1.1
|
314 kumpf 1.4 void _disconnect();
315
|
316 kumpf 1.1 void _reconnect();
317
318 Message* _doRequest(
|
319 a.arora 1.12 AutoPtr<CIMRequestMessage>& request,
|
320 kumpf 1.1 const Uint32 expectedResponseMessageType);
321
322 String _getLocalHostName();
|
323 a.arora 1.12 AutoPtr<Monitor> _monitor;
324 AutoPtr<HTTPConnector> _httpConnector;
|
325 denise.eckstein 1.20 HTTPConnection* _httpConnection;
|
326 r.kieninger 1.11
|
327 dj.gorey 1.5
|
328 kumpf 1.1 Uint32 _timeoutMilliseconds;
329 Boolean _connected;
|
330 a.arora 1.12 AutoPtr<CIMOperationResponseDecoder> _responseDecoder;
331 AutoPtr<CIMOperationRequestEncoder> _requestEncoder;
|
332 kumpf 1.1 ClientAuthenticator _authenticator;
333 String _connectHost;
334 Uint32 _connectPortNumber;
|
335 kumpf 1.10 AutoPtr<SSLContext> _connectSSLContext;
|
336 a.dunfey 1.22 ClientPerfDataStore perfDataStore;
|
337 kumpf 1.1
338 // l10n
|
339 kumpf 1.21 AcceptLanguageList requestAcceptLanguages;
340 ContentLanguageList requestContentLanguages;
341 ContentLanguageList responseContentLanguages;
|
342 kumpf 1.1 };
343
344 PEGASUS_NAMESPACE_END
345
346 #endif /* Pegasus_ClientRep_h */
|