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