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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2