1 karl 1.29 //%2006////////////////////////////////////////////////////////////////////////
|
2 mike 1.2 //
|
3 karl 1.22 // 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.19 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.22 // 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.25 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 karl 1.29 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 mike 1.2 //
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 kumpf 1.11 //
|
21 mike 1.2 // 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 //%/////////////////////////////////////////////////////////////////////////////
33
34 #include <Pegasus/Common/Config.h>
35 #include <iostream>
|
36 kumpf 1.10 #include <Pegasus/Common/Constants.h>
|
37 mike 1.2 #include <Pegasus/Common/XmlWriter.h>
38 #include <Pegasus/Common/HTTPMessage.h>
39 #include "CIMOperationRequestEncoder.h"
40
41 PEGASUS_USING_STD;
42
43 PEGASUS_NAMESPACE_BEGIN
44
|
45 karl 1.18
|
46 mike 1.2 CIMOperationRequestEncoder::CIMOperationRequestEncoder(
|
47 kumpf 1.21 MessageQueue* outputQueue,
48 const String& hostName,
49 ClientAuthenticator* authenticator,
50 Uint32 showOutput)
|
51 mike 1.2 :
|
52 kumpf 1.10 MessageQueue(PEGASUS_QUEUENAME_OPREQENCODER),
|
53 mike 1.2 _outputQueue(outputQueue),
|
54 kumpf 1.21 _hostName(hostName.getCString()),
|
55 karl 1.18 _authenticator(authenticator),
|
56 kumpf 1.21 _showOutput(showOutput)
|
57 mike 1.2 {
|
58 mateus.baur 1.30 dataStore_prt=NULL;
|
59 mike 1.2 }
60
61 CIMOperationRequestEncoder::~CIMOperationRequestEncoder()
62 {
63 }
64
65 void CIMOperationRequestEncoder::handleEnqueue()
66 {
67 Message* message = dequeue();
68
69 if (!message)
|
70 kumpf 1.32 return;
|
71 mike 1.2
72 _authenticator->setRequestMessage(message);
73
74 switch (message->getType())
75 {
|
76 kumpf 1.32 case CIM_CREATE_CLASS_REQUEST_MESSAGE:
77 _encodeCreateClassRequest(
78 (CIMCreateClassRequestMessage*)message);
79 break;
80
81 case CIM_GET_CLASS_REQUEST_MESSAGE:
82 _encodeGetClassRequest((CIMGetClassRequestMessage*)message);
83 break;
84
85 case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
86 _encodeModifyClassRequest(
87 (CIMModifyClassRequestMessage*)message);
88 break;
89
90 case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
91 _encodeEnumerateClassNamesRequest(
92 (CIMEnumerateClassNamesRequestMessage*)message);
93 break;
94
95 case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
96 _encodeEnumerateClassesRequest(
97 kumpf 1.32 (CIMEnumerateClassesRequestMessage*)message);
98 break;
99
100 case CIM_DELETE_CLASS_REQUEST_MESSAGE:
101 _encodeDeleteClassRequest(
102 (CIMDeleteClassRequestMessage*)message);
103 break;
104
105 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
106 _encodeCreateInstanceRequest(
107 (CIMCreateInstanceRequestMessage*)message);
108 break;
109
110 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
111 _encodeGetInstanceRequest((CIMGetInstanceRequestMessage*)message);
112 break;
113
114 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
115 _encodeModifyInstanceRequest(
116 (CIMModifyInstanceRequestMessage*)message);
117 break;
118 kumpf 1.32
119 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
120 _encodeEnumerateInstanceNamesRequest(
121 (CIMEnumerateInstanceNamesRequestMessage*)message);
122 break;
123
124 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
125 _encodeEnumerateInstancesRequest(
126 (CIMEnumerateInstancesRequestMessage*)message);
127 break;
128
129 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
130 _encodeDeleteInstanceRequest(
131 (CIMDeleteInstanceRequestMessage*)message);
132 break;
133
134 case CIM_SET_QUALIFIER_REQUEST_MESSAGE:
135 _encodeSetQualifierRequest(
136 (CIMSetQualifierRequestMessage*)message);
137 break;
138
139 kumpf 1.32 case CIM_GET_QUALIFIER_REQUEST_MESSAGE:
140 _encodeGetQualifierRequest(
141 (CIMGetQualifierRequestMessage*)message);
142 break;
143
144 case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:
145 _encodeEnumerateQualifiersRequest(
146 (CIMEnumerateQualifiersRequestMessage*)message);
147 break;
148
149 case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:
150 _encodeDeleteQualifierRequest(
151 (CIMDeleteQualifierRequestMessage*)message);
152 break;
153
154 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
155 _encodeReferenceNamesRequest(
156 (CIMReferenceNamesRequestMessage*)message);
157 break;
158
159 case CIM_REFERENCES_REQUEST_MESSAGE:
160 kumpf 1.32 _encodeReferencesRequest(
161 (CIMReferencesRequestMessage*)message);
162 break;
163
164 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
165 _encodeAssociatorNamesRequest(
166 (CIMAssociatorNamesRequestMessage*)message);
167 break;
168
169 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
170 _encodeAssociatorsRequest(
171 (CIMAssociatorsRequestMessage*)message);
172 break;
173
174 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
175 _encodeExecQueryRequest(
176 (CIMExecQueryRequestMessage*)message);
177 break;
178
179 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
180 _encodeGetPropertyRequest((CIMGetPropertyRequestMessage*)message);
181 kumpf 1.32 break;
182
183 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
184 _encodeSetPropertyRequest((CIMSetPropertyRequestMessage*)message);
185 break;
186
187 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
188 _encodeInvokeMethodRequest(
189 (CIMInvokeMethodRequestMessage*)message);
190 break;
|
191 mike 1.2 }
192
193 //ATTN: Do not delete the message here.
194 //
195 // ClientAuthenticator needs this message for resending the request on
196 // authentication challenge from the server. The message is deleted in
197 // the decoder after receiving the valid response from thr server.
198 //
199 //delete message;
200 }
201
|
202 a.dunfey 1.28 void CIMOperationRequestEncoder::setDataStorePointer(
203 ClientPerfDataStore* perfDataStore_ptr)
204 { dataStore_prt = perfDataStore_ptr;
205 }
206
|
207 chuck 1.17 // l10n Added accept language and content language support starting here
208
|
209 mike 1.2 void CIMOperationRequestEncoder::_encodeCreateClassRequest(
210 CIMCreateClassRequestMessage* message)
211 {
|
212 mike 1.27 Buffer params;
|
213 kumpf 1.4 XmlWriter::appendClassIParameter(params, "NewClass", message->newClass);
|
214 kumpf 1.32
215 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(
216 _hostName,
|
217 kumpf 1.13 message->nameSpace, CIMName ("CreateClass"), message->messageId,
|
218 kumpf 1.32 message->getHttpMethod(),
219 _authenticator->buildRequestAuthHeader(),
220 ((AcceptLanguageListContainer)message->operationContext.get(
221 AcceptLanguageListContainer::NAME)).getLanguages(),
222 ((ContentLanguageListContainer)message->operationContext.get(
223 ContentLanguageListContainer::NAME)).getLanguages(),
|
224 chuck 1.17 params);
|
225 karl 1.18 _sendRequest(buffer);
|
226 mike 1.2 }
227
228 void CIMOperationRequestEncoder::_encodeGetClassRequest(
229 CIMGetClassRequestMessage* message)
230 {
|
231 mike 1.27 Buffer params;
|
232 mike 1.2
|
233 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
234 kumpf 1.32 params, "ClassName", message->className);
235
|
236 mike 1.2 if (message->localOnly != true)
|
237 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
238 mike 1.2
239 if (message->includeQualifiers != true)
|
240 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", false);
|
241 mike 1.2
242 if (message->includeClassOrigin != false)
|
243 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
244 mike 1.2
245 if (!message->propertyList.isNull())
|
246 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
247 params, message->propertyList);
|
248 mike 1.2
|
249 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(
|
250 kumpf 1.13 _hostName, message->nameSpace, CIMName ("GetClass"), message->messageId,
|
251 kumpf 1.14 message->getHttpMethod(),
|
252 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
253 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
254 AcceptLanguageListContainer::NAME)).getLanguages(),
255 ((ContentLanguageListContainer)message->operationContext.get(
256 ContentLanguageListContainer::NAME)).getLanguages(),
257 params);
|
258 mike 1.2
|
259 karl 1.18 _sendRequest(buffer);
|
260 mike 1.2 }
261
262 void CIMOperationRequestEncoder::_encodeModifyClassRequest(
263 CIMModifyClassRequestMessage* message)
264 {
|
265 mike 1.27 Buffer params;
|
266 mike 1.2
|
267 kumpf 1.4 XmlWriter::appendClassIParameter(
|
268 kumpf 1.32 params, "ModifiedClass", message->modifiedClass);
269
|
270 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
271 kumpf 1.13 message->nameSpace, CIMName ("ModifyClass"), message->messageId,
|
272 kumpf 1.14 message->getHttpMethod(),
|
273 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
274 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
275 AcceptLanguageListContainer::NAME)).getLanguages(),
276 ((ContentLanguageListContainer)message->operationContext.get(
277 ContentLanguageListContainer::NAME)).getLanguages(),
278 params);
|
279 mike 1.2
|
280 karl 1.18 _sendRequest(buffer);
|
281 mike 1.2 }
282
283 void CIMOperationRequestEncoder::_encodeEnumerateClassNamesRequest(
284 CIMEnumerateClassNamesRequestMessage* message)
285 {
|
286 mike 1.27 Buffer params;
|
287 mike 1.2
|
288 kumpf 1.13 if (!message->className.isNull())
|
289 kumpf 1.32 XmlWriter::appendClassNameIParameter(
290 params, "ClassName", message->className);
291
|
292 mike 1.2 if (message->deepInheritance != false)
|
293 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", true);
|
294 mike 1.2
|
295 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
296 kumpf 1.13 message->nameSpace, CIMName ("EnumerateClassNames"), message->messageId,
|
297 kumpf 1.14 message->getHttpMethod(),
|
298 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
299 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
300 AcceptLanguageListContainer::NAME)).getLanguages(),
301 ((ContentLanguageListContainer)message->operationContext.get(
302 ContentLanguageListContainer::NAME)).getLanguages(),
303 params);
|
304 mike 1.2
|
305 karl 1.18 _sendRequest(buffer);
|
306 mike 1.2 }
307
308 void CIMOperationRequestEncoder::_encodeEnumerateClassesRequest(
309 CIMEnumerateClassesRequestMessage* message)
310 {
|
311 mike 1.27 Buffer params;
|
312 mike 1.2
|
313 kumpf 1.13 if (!message->className.isNull())
|
314 kumpf 1.32 XmlWriter::appendClassNameIParameter(
315 params, "ClassName", message->className);
316
|
317 mike 1.2 if (message->deepInheritance != false)
|
318 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", true);
|
319 mike 1.2
320 if (message->localOnly != true)
|
321 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
322 mike 1.2
323 if (message->includeQualifiers != true)
|
324 kumpf 1.32 XmlWriter::appendBooleanIParameter(
325 params, "IncludeQualifiers", false);
|
326 mike 1.2
327 if (message->includeClassOrigin != false)
|
328 kumpf 1.32 XmlWriter::appendBooleanIParameter(
329 params, "IncludeClassOrigin", true);
|
330 mike 1.2
|
331 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
332 kumpf 1.13 message->nameSpace, CIMName ("EnumerateClasses"), message->messageId,
|
333 kumpf 1.14 message->getHttpMethod(),
|
334 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
335 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
336 AcceptLanguageListContainer::NAME)).getLanguages(),
337 ((ContentLanguageListContainer)message->operationContext.get(
338 ContentLanguageListContainer::NAME)).getLanguages(),
339 params);
|
340 mike 1.2
|
341 karl 1.18 _sendRequest(buffer);
|
342 mike 1.2 }
343
344 void CIMOperationRequestEncoder::_encodeDeleteClassRequest(
345 CIMDeleteClassRequestMessage* message)
346 {
|
347 mike 1.27 Buffer params;
|
348 mike 1.2
|
349 kumpf 1.13 if (!message->className.isNull())
|
350 kumpf 1.32 XmlWriter::appendClassNameIParameter(
351 params, "ClassName", message->className);
|
352 mike 1.2
|
353 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
354 kumpf 1.13 message->nameSpace, CIMName ("DeleteClass"), message->messageId,
|
355 kumpf 1.14 message->getHttpMethod(),
|
356 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
357 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
358 AcceptLanguageListContainer::NAME)).getLanguages(),
359 ((ContentLanguageListContainer)message->operationContext.get(
360 ContentLanguageListContainer::NAME)).getLanguages(),
361 params);
|
362 mike 1.2
|
363 karl 1.18 _sendRequest(buffer);
|
364 mike 1.2 }
365
366 void CIMOperationRequestEncoder::_encodeCreateInstanceRequest(
367 CIMCreateInstanceRequestMessage* message)
368 {
|
369 mike 1.27 Buffer params;
|
370 mike 1.2
|
371 kumpf 1.4 XmlWriter::appendInstanceIParameter(
|
372 kumpf 1.32 params, "NewInstance", message->newInstance);
373
|
374 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
375 kumpf 1.13 message->nameSpace, CIMName ("CreateInstance"), message->messageId,
|
376 kumpf 1.14 message->getHttpMethod(),
|
377 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
378 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
379 AcceptLanguageListContainer::NAME)).getLanguages(),
380 ((ContentLanguageListContainer)message->operationContext.get(
381 ContentLanguageListContainer::NAME)).getLanguages(),
382 params);
|
383 mike 1.2
|
384 karl 1.18 _sendRequest(buffer);
|
385 mike 1.2 }
386
387 void CIMOperationRequestEncoder::_encodeGetInstanceRequest(
388 CIMGetInstanceRequestMessage* message)
389 {
|
390 mike 1.27 Buffer params;
|
391 mike 1.2
|
392 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
393 kumpf 1.32 params, "InstanceName", message->instanceName);
394
|
395 mike 1.2 if (message->localOnly != true)
|
396 kumpf 1.32 XmlWriter::appendBooleanIParameter(
397 params, "LocalOnly", false);
|
398 mike 1.2
399 if (message->includeQualifiers != false)
|
400 kumpf 1.32 XmlWriter::appendBooleanIParameter(
401 params, "IncludeQualifiers", true);
|
402 mike 1.2
403 if (message->includeClassOrigin != false)
|
404 kumpf 1.32 XmlWriter::appendBooleanIParameter(
405 params, "IncludeClassOrigin", true);
|
406 mike 1.2
407 if (!message->propertyList.isNull())
|
408 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
409 params, message->propertyList);
|
410 mike 1.2
|
411 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
412 kumpf 1.13 message->nameSpace, CIMName ("GetInstance"), message->messageId,
|
413 kumpf 1.14 message->getHttpMethod(),
|
414 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
415 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
416 AcceptLanguageListContainer::NAME)).getLanguages(),
417 ((ContentLanguageListContainer)message->operationContext.get(
418 ContentLanguageListContainer::NAME)).getLanguages(),
419 params);
|
420 mike 1.2
|
421 karl 1.18 _sendRequest(buffer);
|
422 mike 1.2 }
423
424 void CIMOperationRequestEncoder::_encodeModifyInstanceRequest(
425 CIMModifyInstanceRequestMessage* message)
426 {
|
427 mike 1.27 Buffer params;
|
428 kumpf 1.4 XmlWriter::appendNamedInstanceIParameter(
|
429 kumpf 1.32 params, "ModifiedInstance", message->modifiedInstance);
430
|
431 mike 1.2 if (message->includeQualifiers != true)
|
432 kumpf 1.32 XmlWriter::appendBooleanIParameter(
433 params, "IncludeQualifiers", false);
|
434 mike 1.2
435 if (!message->propertyList.isNull())
|
436 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
437 params, message->propertyList);
|
438 mike 1.2
|
439 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
440 kumpf 1.13 message->nameSpace, CIMName ("ModifyInstance"), message->messageId,
|
441 kumpf 1.14 message->getHttpMethod(),
|
442 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
443 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
444 AcceptLanguageListContainer::NAME)).getLanguages(),
445 ((ContentLanguageListContainer)message->operationContext.get(
446 ContentLanguageListContainer::NAME)).getLanguages(),
447 params);
|
448 mike 1.2
|
449 karl 1.18 _sendRequest(buffer);
|
450 mike 1.2 }
451
452 void CIMOperationRequestEncoder::_encodeEnumerateInstanceNamesRequest(
453 CIMEnumerateInstanceNamesRequestMessage* message)
454 {
|
455 mike 1.27 Buffer params;
|
456 mike 1.2
|
457 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
458 kumpf 1.32 params, "ClassName", message->className);
|
459 chuck 1.17
460
|
461 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
462 kumpf 1.32 message->nameSpace, CIMName ("EnumerateInstanceNames"),
|
463 kumpf 1.14 message->messageId, message->getHttpMethod(),
|
464 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
465 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
466 AcceptLanguageListContainer::NAME)).getLanguages(),
467 ((ContentLanguageListContainer)message->operationContext.get(
468 ContentLanguageListContainer::NAME)).getLanguages(),
469 params);
|
470 chuck 1.17
|
471 karl 1.18 _sendRequest(buffer);
|
472 mike 1.2 }
473
474 void CIMOperationRequestEncoder::_encodeEnumerateInstancesRequest(
475 CIMEnumerateInstancesRequestMessage* message)
476 {
|
477 mike 1.27 Buffer params;
|
478 mike 1.2
|
479 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
480 mike 1.2 params, "ClassName", message->className);
|
481 kumpf 1.32
|
482 mike 1.2 if (message->localOnly != true)
|
483 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "LocalOnly", false);
|
484 mike 1.2
485 if (message->deepInheritance != true)
|
486 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "DeepInheritance", false);
|
487 mike 1.2
488 if (message->includeQualifiers != false)
|
489 kumpf 1.32 XmlWriter::appendBooleanIParameter(
490 params, "IncludeQualifiers", true);
|
491 mike 1.2
492 if (message->includeClassOrigin != false)
|
493 kumpf 1.32 XmlWriter::appendBooleanIParameter(
494 params, "IncludeClassOrigin", true);
|
495 mike 1.2
496 if (!message->propertyList.isNull())
|
497 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
498 params, message->propertyList);
|
499 mike 1.2
|
500 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
501 kumpf 1.13 message->nameSpace, CIMName ("EnumerateInstances"), message->messageId,
|
502 kumpf 1.14 message->getHttpMethod(),
|
503 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
504 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
505 AcceptLanguageListContainer::NAME)).getLanguages(),
506 ((ContentLanguageListContainer)message->operationContext.get(
507 ContentLanguageListContainer::NAME)).getLanguages(),
508 params);
|
509 mike 1.2
|
510 karl 1.18 _sendRequest(buffer);
|
511 mike 1.2 }
512
513 void CIMOperationRequestEncoder::_encodeDeleteInstanceRequest(
514 CIMDeleteInstanceRequestMessage* message)
515 {
|
516 mike 1.27 Buffer params;
|
517 mike 1.2
|
518 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
519 kumpf 1.32 params, "InstanceName", message->instanceName);
|
520 mike 1.2
|
521 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
522 kumpf 1.13 message->nameSpace, CIMName ("DeleteInstance"), message->messageId,
|
523 kumpf 1.14 message->getHttpMethod(),
|
524 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
525 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
526 AcceptLanguageListContainer::NAME)).getLanguages(),
527 ((ContentLanguageListContainer)message->operationContext.get(
528 ContentLanguageListContainer::NAME)).getLanguages(),
529 params);
|
530 mike 1.2
|
531 karl 1.18 _sendRequest(buffer);
|
532 mike 1.2 }
533
534 void CIMOperationRequestEncoder::_encodeGetPropertyRequest(
535 CIMGetPropertyRequestMessage* message)
536 {
|
537 mike 1.27 Buffer params;
|
538 mike 1.2
|
539 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
540 kumpf 1.32 params, "InstanceName", message->instanceName);
541
|
542 kumpf 1.4 XmlWriter::appendPropertyNameIParameter(
|
543 kumpf 1.32 params, message->propertyName);
|
544 mike 1.2
|
545 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
546 kumpf 1.13 message->nameSpace, CIMName ("GetProperty"), message->messageId,
|
547 kumpf 1.14 message->getHttpMethod(),
|
548 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
549 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
550 AcceptLanguageListContainer::NAME)).getLanguages(),
551 ((ContentLanguageListContainer)message->operationContext.get(
552 ContentLanguageListContainer::NAME)).getLanguages(),
553 params);
|
554 mike 1.2
|
555 karl 1.18 _sendRequest(buffer);
|
556 mike 1.2 }
557
558 void CIMOperationRequestEncoder::_encodeSetPropertyRequest(
559 CIMSetPropertyRequestMessage* message)
560 {
|
561 mike 1.27 Buffer params;
|
562 mike 1.2
|
563 kumpf 1.4 XmlWriter::appendInstanceNameIParameter(
|
564 kumpf 1.32 params, "InstanceName", message->instanceName);
565
|
566 kumpf 1.4 XmlWriter::appendPropertyNameIParameter(
|
567 kumpf 1.32 params, message->propertyName);
|
568 mike 1.2
569 if (!message->newValue.isNull())
|
570 kumpf 1.4 XmlWriter::appendPropertyValueIParameter(
|
571 kumpf 1.32 params, "NewValue", message->newValue);
|
572 mike 1.2
|
573 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
574 kumpf 1.13 message->nameSpace, CIMName ("SetProperty"), message->messageId,
|
575 kumpf 1.14 message->getHttpMethod(),
|
576 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
577 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
578 AcceptLanguageListContainer::NAME)).getLanguages(),
579 ((ContentLanguageListContainer)message->operationContext.get(
580 ContentLanguageListContainer::NAME)).getLanguages(),
581 params);
|
582 mike 1.2
|
583 karl 1.18 _sendRequest(buffer);
|
584 mike 1.2 }
585
586 void CIMOperationRequestEncoder::_encodeSetQualifierRequest(
587 CIMSetQualifierRequestMessage* message)
588 {
|
589 mike 1.27 Buffer params;
|
590 kumpf 1.4 XmlWriter::appendQualifierDeclarationIParameter(
|
591 kumpf 1.32 params, "QualifierDeclaration", message->qualifierDeclaration);
|
592 mike 1.2
|
593 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
594 kumpf 1.13 message->nameSpace, CIMName ("SetQualifier"), message->messageId,
|
595 kumpf 1.14 message->getHttpMethod(),
|
596 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
597 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
598 AcceptLanguageListContainer::NAME)).getLanguages(),
599 ((ContentLanguageListContainer)message->operationContext.get(
600 ContentLanguageListContainer::NAME)).getLanguages(),
601 params);
|
602 mike 1.2
|
603 karl 1.18 _sendRequest(buffer);
|
604 mike 1.2 }
605
606 void CIMOperationRequestEncoder::_encodeGetQualifierRequest(
607 CIMGetQualifierRequestMessage* message)
608 {
|
609 mike 1.27 Buffer params;
|
610 mike 1.2
|
611 kumpf 1.13 if (!message->qualifierName.isNull())
|
612 kumpf 1.32 XmlWriter::appendStringIParameter(
613 params, "QualifierName", message->qualifierName.getString());
614
|
615 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
616 kumpf 1.13 message->nameSpace, CIMName ("GetQualifier"), message->messageId,
|
617 kumpf 1.14 message->getHttpMethod(),
|
618 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
619 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
620 AcceptLanguageListContainer::NAME)).getLanguages(),
621 ((ContentLanguageListContainer)message->operationContext.get(
622 ContentLanguageListContainer::NAME)).getLanguages(),
623 params);
|
624 mike 1.2
|
625 karl 1.18 _sendRequest(buffer);
|
626 mike 1.2 }
627
628 void CIMOperationRequestEncoder::_encodeEnumerateQualifiersRequest(
629 CIMEnumerateQualifiersRequestMessage* message)
630 {
|
631 mike 1.27 Buffer params;
|
632 mike 1.2
|
633 kumpf 1.32 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
634 kumpf 1.13 message->nameSpace, CIMName ("EnumerateQualifiers"), message->messageId,
|
635 kumpf 1.32 message->getHttpMethod(),
|
636 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
637 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
638 AcceptLanguageListContainer::NAME)).getLanguages(),
639 ((ContentLanguageListContainer)message->operationContext.get(
640 ContentLanguageListContainer::NAME)).getLanguages(),
641 params);
|
642 mike 1.2
|
643 karl 1.18 _sendRequest(buffer);
|
644 mike 1.2 }
645
646 void CIMOperationRequestEncoder::_encodeDeleteQualifierRequest(
647 CIMDeleteQualifierRequestMessage* message)
648 {
|
649 mike 1.27 Buffer params;
|
650 mike 1.2
|
651 kumpf 1.13 if (!message->qualifierName.isNull())
|
652 kumpf 1.32 XmlWriter::appendStringIParameter(
653 params, "QualifierName", message->qualifierName.getString());
654
|
655 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
656 kumpf 1.13 message->nameSpace, CIMName ("DeleteQualifier"), message->messageId,
|
657 kumpf 1.32 message->getHttpMethod(),
|
658 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
659 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
660 AcceptLanguageListContainer::NAME)).getLanguages(),
661 ((ContentLanguageListContainer)message->operationContext.get(
662 ContentLanguageListContainer::NAME)).getLanguages(),
663 params);
|
664 mike 1.2
|
665 karl 1.18 _sendRequest(buffer);
|
666 mike 1.2 }
667
668 void CIMOperationRequestEncoder::_encodeReferenceNamesRequest(
669 CIMReferenceNamesRequestMessage* message)
670 {
|
671 mike 1.27 Buffer params;
|
672 mike 1.2
|
673 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
674 kumpf 1.32 params, "ObjectName", message->objectName);
|
675 mike 1.2
|
676 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
677 kumpf 1.32 params, "ResultClass", message->resultClass);
|
678 mike 1.2
|
679 kumpf 1.16 //
680 // The Client API has no way to represent a NULL role;
681 // An empty string is interpreted as NULL
682 //
683 if (message->role != String::EMPTY)
684 {
685 XmlWriter::appendStringIParameter(
|
686 kumpf 1.32 params, "Role", message->role);
|
687 kumpf 1.16 }
|
688 mike 1.2
|
689 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
690 kumpf 1.13 message->nameSpace, CIMName ("ReferenceNames"), message->messageId,
|
691 kumpf 1.14 message->getHttpMethod(),
|
692 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
693 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
694 AcceptLanguageListContainer::NAME)).getLanguages(),
695 ((ContentLanguageListContainer)message->operationContext.get(
696 ContentLanguageListContainer::NAME)).getLanguages(),
697 params);
|
698 mike 1.2
|
699 karl 1.18 _sendRequest(buffer);
|
700 mike 1.2 }
701
702 void CIMOperationRequestEncoder::_encodeReferencesRequest(
703 CIMReferencesRequestMessage* message)
704 {
|
705 mike 1.27 Buffer params;
|
706 mike 1.2
|
707 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
708 kumpf 1.32 params, "ObjectName", message->objectName);
|
709 mike 1.2
|
710 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
711 kumpf 1.32 params, "ResultClass", message->resultClass);
|
712 mike 1.2
|
713 kumpf 1.16 //
714 // The Client API has no way to represent a NULL role;
715 // An empty string is interpreted as NULL
716 //
717 if (message->role != String::EMPTY)
718 {
719 XmlWriter::appendStringIParameter(
|
720 kumpf 1.32 params, "Role", message->role);
|
721 kumpf 1.16 }
|
722 mike 1.2
723 if (message->includeQualifiers != false)
|
724 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", true);
|
725 mike 1.2
726 if (message->includeClassOrigin != false)
|
727 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
728 mike 1.2
729 if (!message->propertyList.isNull())
|
730 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
731 params, message->propertyList);
|
732 mike 1.2
|
733 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
734 kumpf 1.13 message->nameSpace, CIMName ("References"), message->messageId,
|
735 kumpf 1.14 message->getHttpMethod(),
|
736 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
737 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
738 AcceptLanguageListContainer::NAME)).getLanguages(),
739 ((ContentLanguageListContainer)message->operationContext.get(
740 ContentLanguageListContainer::NAME)).getLanguages(),
741 params);
|
742 mike 1.2
|
743 karl 1.18 _sendRequest(buffer);
|
744 mike 1.2 }
745
746 void CIMOperationRequestEncoder::_encodeAssociatorNamesRequest(
747 CIMAssociatorNamesRequestMessage* message)
748 {
|
749 mike 1.27 Buffer params;
|
750 mike 1.2
|
751 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
752 kumpf 1.32 params, "ObjectName", message->objectName);
|
753 mike 1.2
|
754 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
755 kumpf 1.32 params, "AssocClass", message->assocClass);
|
756 mike 1.2
|
757 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
758 kumpf 1.32 params, "ResultClass", message->resultClass);
|
759 mike 1.2
|
760 kumpf 1.16 //
761 // The Client API has no way to represent a NULL role;
762 // An empty string is interpreted as NULL
763 //
764 if (message->role != String::EMPTY)
765 {
766 XmlWriter::appendStringIParameter(
|
767 kumpf 1.32 params, "Role", message->role);
|
768 kumpf 1.16 }
769
770 //
771 // The Client API has no way to represent a NULL resultRole;
772 // An empty string is interpreted as NULL
773 //
774 if (message->resultRole != String::EMPTY)
775 {
776 XmlWriter::appendStringIParameter(
|
777 kumpf 1.32 params, "ResultRole", message->resultRole);
|
778 kumpf 1.16 }
|
779 mike 1.2
|
780 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
781 kumpf 1.13 message->nameSpace, CIMName ("AssociatorNames"), message->messageId,
|
782 kumpf 1.14 message->getHttpMethod(),
|
783 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
784 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
785 AcceptLanguageListContainer::NAME)).getLanguages(),
786 ((ContentLanguageListContainer)message->operationContext.get(
787 ContentLanguageListContainer::NAME)).getLanguages(),
788 params);
|
789 mike 1.2
|
790 karl 1.18 _sendRequest(buffer);
|
791 mike 1.2 }
792
793 void CIMOperationRequestEncoder::_encodeAssociatorsRequest(
794 CIMAssociatorsRequestMessage* message)
795 {
|
796 mike 1.27 Buffer params;
|
797 mike 1.2
|
798 kumpf 1.4 XmlWriter::appendObjectNameIParameter(
|
799 kumpf 1.32 params, "ObjectName", message->objectName);
|
800 mike 1.2
|
801 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
802 kumpf 1.32 params, "AssocClass", message->assocClass);
|
803 mike 1.2
|
804 kumpf 1.4 XmlWriter::appendClassNameIParameter(
|
805 kumpf 1.32 params, "ResultClass", message->resultClass);
|
806 mike 1.2
|
807 kumpf 1.16 //
808 // The Client API has no way to represent a NULL role;
809 // An empty string is interpreted as NULL
810 //
811 if (message->role != String::EMPTY)
812 {
813 XmlWriter::appendStringIParameter(
|
814 kumpf 1.32 params, "Role", message->role);
|
815 kumpf 1.16 }
816
817 //
818 // The Client API has no way to represent a NULL resultRole;
819 // An empty string is interpreted as NULL
820 //
821 if (message->resultRole != String::EMPTY)
822 {
823 XmlWriter::appendStringIParameter(
|
824 kumpf 1.32 params, "ResultRole", message->resultRole);
|
825 kumpf 1.16 }
|
826 mike 1.2
827 if (message->includeQualifiers != false)
|
828 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeQualifiers", true);
|
829 mike 1.2
830 if (message->includeClassOrigin != false)
|
831 kumpf 1.32 XmlWriter::appendBooleanIParameter(params, "IncludeClassOrigin", true);
|
832 mike 1.2
833 if (!message->propertyList.isNull())
|
834 kumpf 1.32 XmlWriter::appendPropertyListIParameter(
835 params, message->propertyList);
|
836 mike 1.2
|
837 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
838 kumpf 1.13 message->nameSpace, CIMName ("Associators"), message->messageId,
|
839 kumpf 1.14 message->getHttpMethod(),
|
840 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
841 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
842 AcceptLanguageListContainer::NAME)).getLanguages(),
843 ((ContentLanguageListContainer)message->operationContext.get(
844 ContentLanguageListContainer::NAME)).getLanguages(),
845 params);
|
846 kumpf 1.9
|
847 karl 1.18 _sendRequest(buffer);
|
848 kumpf 1.9 }
849
850 void CIMOperationRequestEncoder::_encodeExecQueryRequest(
851 CIMExecQueryRequestMessage* message)
852 {
|
853 mike 1.27 Buffer params;
|
854 kumpf 1.9
855 XmlWriter::appendStringIParameter(
|
856 kumpf 1.32 params, "QueryLanguage", message->queryLanguage);
|
857 kumpf 1.9
858 XmlWriter::appendStringIParameter(
|
859 kumpf 1.32 params, "Query", message->query);
|
860 kumpf 1.9
|
861 mike 1.27 Buffer buffer = XmlWriter::formatSimpleIMethodReqMessage(_hostName,
|
862 kumpf 1.13 message->nameSpace, CIMName ("ExecQuery"), message->messageId,
|
863 kumpf 1.14 message->getHttpMethod(),
|
864 chuck 1.17 _authenticator->buildRequestAuthHeader(),
|
865 kumpf 1.32 ((AcceptLanguageListContainer)message->operationContext.get(
866 AcceptLanguageListContainer::NAME)).getLanguages(),
867 ((ContentLanguageListContainer)message->operationContext.get(
868 ContentLanguageListContainer::NAME)).getLanguages(),
869 params);
|
870 mike 1.2
|
871 karl 1.18 _sendRequest(buffer);
|
872 mike 1.2 }
873
874 void CIMOperationRequestEncoder::_encodeInvokeMethodRequest(
875 CIMInvokeMethodRequestMessage* message)
876 {
|
877 mike 1.27 Buffer buffer = XmlWriter::formatSimpleMethodReqMessage(_hostName,
|
878 kumpf 1.32 message->nameSpace, message->instanceName, message->methodName,
879 message->inParameters, message->messageId,
880 message->getHttpMethod(), _authenticator->buildRequestAuthHeader(),
881 ((AcceptLanguageListContainer)message->operationContext.get(
882 AcceptLanguageListContainer::NAME)).getLanguages(),
883 ((ContentLanguageListContainer)message->operationContext.get(
884 ContentLanguageListContainer::NAME)).getLanguages());
885
|
886 karl 1.18 _sendRequest(buffer);
887 }
888
889 // Enqueue the buffer to the ouptut queue with a conditional display.
890 // This function is only enabled if the Pegasus Client trace is enabled.
891 // Uses parameter to determine whether to send to console to log.
|
892 mike 1.27 void CIMOperationRequestEncoder::_sendRequest(Buffer& buffer)
|
893 karl 1.18 {
894 #ifdef PEGASUS_CLIENT_TRACE_ENABLE
895 if (_showOutput & 1)
896 {
897 buffer.append('\0');
898 XmlWriter::indentedPrint(cout, buffer.getData());
899 cout << endl;
900 buffer.remove(buffer.size() - 1);
901 }
|
902 kumpf 1.32 if (_showOutput & 2)
|
903 karl 1.18 {
904 buffer.append('\0');
|
905 kumpf 1.32 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
906 "CIMOperationRequestEncoder::SendRequest, XML content: $1",
907 buffer.getData());
|
908 karl 1.18 buffer.remove(buffer.size() - 1);
909 }
910 #endif
|
911 w.white 1.24
912 HTTPMessage * http_request = new HTTPMessage(buffer);
913
|
914 kumpf 1.32 // these variables are needed to call HTTPMessage::parse, all we need
915 // is contentLength
|
916 w.white 1.24 String startLine;
|
917 kumpf 1.32 Array<HTTPHeader> headers;
918 Uint32 contentLength;
|
919 w.white 1.24
920 http_request->parse(startLine, headers, contentLength);
|
921 kumpf 1.32 if (dataStore_prt)
|
922 mateus.baur 1.30 {
923 dataStore_prt->setRequestSize(contentLength);
924 dataStore_prt->setStartNetworkTime();
925 }
|
926 kumpf 1.32
|
927 w.white 1.24 _outputQueue->enqueue(http_request);
|
928 mike 1.2 }
|
929 karl 1.18
|
930 mike 1.2 PEGASUS_NAMESPACE_END
|