(file) Return to CIMOperationRequestEncoder.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Client

  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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2