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