1 martin 1.3 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.4 //
|
3 martin 1.3 // 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.4 //
|
10 martin 1.3 // 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.4 //
|
17 martin 1.3 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.4 //
|
20 martin 1.3 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.4 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.3 // 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.4 //
|
28 martin 1.3 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.1 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #include <Pegasus/Common/StatisticalData.h>
33 #include "XmlWriter.h"
34 #include "BinaryCodec.h"
35 #include "CIMBuffer.h"
36 #include "StringConversion.h"
37 #include "Print.h"
38
39 #define ENABLE_VALIDATION
40
41 #if defined(_EQUAL)
42 # undef _EQUAL
43 #endif
44
45 #define _EQUAL(X, Y) (X.size() == (sizeof(Y)-1) && String::equalNoCase(X, Y))
46
47 // Header flags:
48 #define LOCAL_ONLY (1 << 0)
49 #define INCLUDE_QUALIFIERS (1 << 1)
50 mike 1.1 #define INCLUDE_CLASS_ORIGIN (1 << 2)
51 #define DEEP_INHERITANCE (1 << 3)
|
52 karl 1.12.2.1 #define CONTINUE_ON_ERROR (1 << 4)
|
53 mike 1.1
54 PEGASUS_NAMESPACE_BEGIN
55
56 //==============================================================================
57 //
58 // Local definitions:
59 //
60 //==============================================================================
61
62 static const Uint32 _MAGIC = 0xF00DFACE;
63 static const Uint32 _REVERSE_MAGIC = 0xCEFA0DF0;
64 static const Uint32 _VERSION = 1;
65 static const size_t _DEFAULT_CIM_BUFFER_SIZE = 16*1024;
66
67 enum Operation
68 {
69 OP_Invalid,
70 OP_GetClass,
71 OP_GetInstance,
72 OP_IndicationDelivery,
73 OP_DeleteClass,
74 mike 1.1 OP_DeleteInstance,
75 OP_CreateClass,
76 OP_CreateInstance,
77 OP_ModifyClass,
78 OP_ModifyInstance,
79 OP_EnumerateClasses,
80 OP_EnumerateClassNames,
81 OP_EnumerateInstances,
82 OP_EnumerateInstanceNames,
83 OP_ExecQuery,
84 OP_Associators,
85 OP_AssociatorNames,
86 OP_References,
87 OP_ReferenceNames,
88 OP_GetProperty,
89 OP_SetProperty,
90 OP_GetQualifier,
91 OP_SetQualifier,
92 OP_DeleteQualifier,
93 OP_EnumerateQualifiers,
94 OP_InvokeMethod,
|
95 karl 1.12.2.4 // EXP_PULL_BEGIN
|
96 karl 1.12.2.1 OP_OpenEnumerateInstances,
97 OP_OpenEnumerateInstancePaths,
98 OP_OpenReferenceInstances,
99 OP_OpenReferenceInstancePaths,
100 OP_OpenAssociatorInstances,
101 OP_OpenAssociatorInstancePaths,
102 OP_PullInstancesWithPath,
103 OP_PullInstancePaths,
104 OP_CloseEnumeration,
105 OP_EnumerationCount,
|
106 karl 1.12.2.6 OP_OpenQueryInstances,
|
107 karl 1.12.2.4 // EXP_PULL_END
|
108 kumpf 1.2 OP_Count
|
109 mike 1.1 };
110
111 static Operation _NameToOp(const CIMName& name)
112 {
113 const String& s = name.getString();
114
115 switch (s[0])
116 {
117 case 'A':
118 if (_EQUAL(s, "Associators"))
119 return OP_Associators;
120 if (_EQUAL(s, "AssociatorNames"))
121 return OP_AssociatorNames;
122 break;
123 case 'C':
124 if (_EQUAL(s, "CreateInstance"))
125 return OP_CreateInstance;
126 if (_EQUAL(s, "CreateClass"))
127 return OP_CreateClass;
|
128 karl 1.12.2.4 //EXP_PULL_BEGIN
|
129 karl 1.12.2.1 if (_EQUAL(s, "CloseEnumeration"))
130 return OP_CloseEnumeration;
|
131 karl 1.12.2.4 // EXP_PULL_END
|
132 mike 1.1 break;
133 case 'D':
134 if (_EQUAL(s, "DeleteInstance"))
135 return OP_DeleteInstance;
136 if (_EQUAL(s, "DeleteClass"))
137 return OP_DeleteClass;
138 if (_EQUAL(s, "DeleteQualifier"))
139 return OP_DeleteQualifier;
140 break;
141 case 'E':
142 if (_EQUAL(s, "EnumerateInstances"))
143 return OP_EnumerateInstances;
144 if (_EQUAL(s, "EnumerateInstanceNames"))
145 return OP_EnumerateInstanceNames;
146 if (_EQUAL(s, "ExecQuery"))
147 return OP_ExecQuery;
148 if (_EQUAL(s, "EnumerateClassNames"))
149 return OP_EnumerateClassNames;
150 if (_EQUAL(s, "EnumerateClasses"))
151 return OP_EnumerateClasses;
152 if (_EQUAL(s, "EnumerateQualifiers"))
153 mike 1.1 return OP_EnumerateQualifiers;
154 break;
155 case 'G':
156 if (_EQUAL(s, "GetInstance"))
157 return OP_GetInstance;
158 if (_EQUAL(s, "GetClass"))
159 return OP_GetClass;
160 if (_EQUAL(s, "GetQualifier"))
161 return OP_GetQualifier;
162 if (_EQUAL(s, "GetProperty"))
163 return OP_GetProperty;
164 break;
165 case 'I':
166 if (_EQUAL(s, "InvokeMethod"))
167 return OP_InvokeMethod;
168 if (_EQUAL(s, "IndicationDelivery"))
169 return OP_IndicationDelivery;
170 break;
171 case 'M':
172 if (_EQUAL(s, "ModifyInstance"))
173 return OP_ModifyInstance;
174 mike 1.1 if (_EQUAL(s, "ModifyClass"))
175 return OP_ModifyClass;
176 break;
|
177 karl 1.12.2.4 // EXP_PULL_BEGIN
|
178 karl 1.12.2.1 case 'O':
179 if (_EQUAL(s, "OpenEnumerateInstances"))
180 return OP_OpenEnumerateInstances;
181 if (_EQUAL(s, "OpenEnumerateInstancePaths"))
182 return OP_OpenEnumerateInstancePaths;
183 if (_EQUAL(s, "OpenReferenceInstances"))
184 return OP_OpenReferenceInstances;
185 if (_EQUAL(s, "OpenReferenceInstancePaths"))
186 return OP_OpenReferenceInstancePaths;
187 if (_EQUAL(s, "OpenAssociatorInstances"))
188 return OP_OpenAssociatorInstances;
189 if (_EQUAL(s, "OpenAssociatorInstancePaths"))
190 return OP_OpenAssociatorInstancePaths;
|
191 karl 1.12.2.6 if (_EQUAL(s, "OpenQueryInstances"))
192 return OP_OpenQueryInstances;;
|
193 karl 1.12.2.1 break;
194 case 'P':
195 if (_EQUAL(s, "PullInstancesWithPath"))
196 return OP_PullInstancesWithPath;
197 if (_EQUAL(s, "PullInstancePaths"))
198 return OP_PullInstancePaths;
199 break;
|
200 karl 1.12.2.4 // EXP_PULL_END
|
201 mike 1.1 case 'R':
202 if (_EQUAL(s, "References"))
203 return OP_References;
204 if (_EQUAL(s, "ReferenceNames"))
205 return OP_ReferenceNames;
206 break;
207 case 'S':
208 if (_EQUAL(s, "SetQualifier"))
209 return OP_SetQualifier;
210 if (_EQUAL(s, "SetProperty"))
211 return OP_SetProperty;
212 break;
213 }
214
215 // Unknown, se we will assume it is an extrinsic method!
216 return OP_InvokeMethod;
217 }
218
219 static void _putHeader(
220 CIMBuffer& out,
221 Uint32 flags,
222 mike 1.1 const String& messageId,
223 Operation operation)
224 {
225 // [MAGIC]
226 out.putUint32(_MAGIC);
227
228 // [VERSION]
229 out.putUint32(_VERSION);
230
231 // [FLAGS]
232 out.putUint32(flags);
233
234 // [MESSAGEID]
235 out.putString(messageId);
236
237 // [OPERATION]
238 out.putUint32(operation);
239 }
240
241 static bool _getHeader(
242 CIMBuffer& in,
243 mike 1.1 Uint32& flags,
244 String& messageId,
245 Operation& operation_)
246 {
247 Uint32 magic;
248 Uint32 version;
249
250 // [MAGIC]
251 if (!in.getUint32(magic))
252 return false;
253
254 if (magic != _MAGIC)
255 {
256 if (magic != _REVERSE_MAGIC)
257 return false;
258
259 // Sender has opposite endianess so turn on endian swapping:
260 in.setSwap(true);
261 }
262
263 // [VERSION]
264 mike 1.1 if (!in.getUint32(version) || version != _VERSION)
265 return false;
266
267 // [FLAGS]
268 if (!in.getUint32(flags))
269 return false;
270
271 // [MESSAGEID]
272 if (!in.getString(messageId))
273 return false;
274
275 // [OPERATION]
276 {
277 Uint32 op;
278
279 if (!in.getUint32(op) || op == OP_Invalid || op >= OP_Count)
280 return false;
281
282 operation_ = Operation(op);
283 }
284
285 mike 1.1 return true;
286 }
287
288 //==============================================================================
289 //
290 // EnumerateInstances
291 //
292 //==============================================================================
293
294 static void _encodeEnumerateInstancesRequest(
295 CIMBuffer& buf,
296 CIMEnumerateInstancesRequestMessage* msg,
297 CIMName& name)
298 {
299 /* See ../Client/CIMOperationRequestEncoder.cpp */
300
301 static const CIMName NAME("EnumerateInstances");
302 name = NAME;
303
304 // [HEADER]
305
306 mike 1.1 Uint32 flags = 0;
307
308 if (msg->deepInheritance)
309 flags |= DEEP_INHERITANCE;
310
311 if (msg->includeQualifiers)
312 flags |= INCLUDE_QUALIFIERS;
313
314 if (msg->includeClassOrigin)
315 flags |= INCLUDE_CLASS_ORIGIN;
316
317 _putHeader(buf, flags, msg->messageId, OP_EnumerateInstances);
318
319 // [NAMESPACE]
320 buf.putNamespaceName(msg->nameSpace);
321
322 // [CLASSNAME]
323 buf.putName(msg->className);
324
325 // [PROPERTY-LIST]
326 buf.putPropertyList(msg->propertyList);
327 mike 1.1 }
328
329 static CIMEnumerateInstancesRequestMessage* _decodeEnumerateInstancesRequest(
330 CIMBuffer& in,
331 Uint32 queueId,
332 Uint32 returnQueueId,
333 Uint32 flags,
334 const String& messageId)
335 {
336 /* See ../Server/CIMOperationRequestDecoder.cpp */
337
338 STAT_GETSTARTTIME
339
340 Boolean deepInheritance = flags & DEEP_INHERITANCE;
|
341 karl 1.12.2.5 #ifndef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
|
342 mike 1.1 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
|
343 karl 1.12.2.5 #endif
|
344 mike 1.1 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
345
346 // [NAMESPACE]
347
348 CIMNamespaceName nameSpace;
349
350 if (!in.getNamespaceName(nameSpace))
351 return 0;
352
353 // [CLASSNAME]
354 CIMName className;
355
356 if (!in.getName(className))
357 return 0;
358
359 // [PROPERTY-LIST]
360 CIMPropertyList propertyList;
361 if (!in.getPropertyList(propertyList))
362 return 0;
363
364 AutoPtr<CIMEnumerateInstancesRequestMessage> request(
365 mike 1.1 new CIMEnumerateInstancesRequestMessage(
366 messageId,
367 nameSpace,
368 className,
369 deepInheritance,
370 #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
371 false,
372 #else
373 includeQualifiers,
374 #endif
375 includeClassOrigin,
376 propertyList,
377 QueueIdStack(queueId, returnQueueId)));
378
379 request->binaryRequest = true;
380
381 STAT_SERVERSTART
382
383 return request.release();
384 }
385
386 mike 1.1 static void _encodeEnumerateInstancesResponseBody(
387 CIMBuffer& out,
|
388 thilo.boehm 1.10 CIMResponseData& data,
|
389 karl 1.12.2.3 CIMName& name,
390 bool isFirst)
|
391 mike 1.1 {
392 /* See ../Server/CIMOperationResponseEncoder.cpp */
393
394 static const CIMName NAME("EnumerateInstances");
395 name = NAME;
396
|
397 karl 1.12.2.3 // Only write the property list on the first provider response
398 if (isFirst)
399 {
400 // [PROPERTY-LIST]
401 out.putPropertyList(data.getPropertyList());
402 }
|
403 r.kieninger 1.8 data.encodeBinaryResponse(out);
|
404 mike 1.1 }
405
406 static CIMEnumerateInstancesResponseMessage* _decodeEnumerateInstancesResponse(
407 CIMBuffer& in,
408 const String& messageId)
409 {
410 CIMEnumerateInstancesResponseMessage* msg;
411 CIMException cimException;
412
413 msg = new CIMEnumerateInstancesResponseMessage(
414 messageId,
415 cimException,
416 QueueIdStack());
417
|
418 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
419 r.kieninger 1.9 // to a later point in time when the data is actually retrieved through
|
420 karl 1.12.2.1 // a call to CIMResponseData::getInstances, which
421 // resolves the binary data as it is passed to the next interface.
|
422 r.kieninger 1.9 // This allows an alternate client implementation to gain direct access
423 // to the binary data and pass this for example to the JNI implementation
424 // of the JSR48 CIM Client for Java.
|
425 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
426 karl 1.12.2.3
427 // [PROPERTY-LIST]
428 CIMPropertyList propertyList;
429 if (!in.getPropertyList(propertyList))
430 {
431 return 0;
432 }
433 responseData.setPropertyList(propertyList);
434
|
435 karl 1.12 responseData.setRemainingBinaryData(in);
|
436 r.kieninger 1.9
437 msg->binaryRequest=true;
|
438 mike 1.1 return msg;
439 }
440
441 //==============================================================================
442 //
443 // EnumerateInstanceNames
444 //
445 //==============================================================================
446
|
447 kumpf 1.6 static CIMEnumerateInstanceNamesRequestMessage*
|
448 mike 1.1 _decodeEnumerateInstanceNamesRequest(
449 CIMBuffer& in,
450 Uint32 queueId,
451 Uint32 returnQueueId,
452 const String& messageId)
453 {
454 STAT_GETSTARTTIME
455
456 // [NAMESPACE]
457 CIMNamespaceName nameSpace;
458
459 if (!in.getNamespaceName(nameSpace))
460 return 0;
461
462 // [CLASSNAME]
463 CIMName className;
464
465 if (!in.getName(className))
466 return 0;
467
468 AutoPtr<CIMEnumerateInstanceNamesRequestMessage> request(
469 mike 1.1 new CIMEnumerateInstanceNamesRequestMessage(
470 messageId,
471 nameSpace,
472 className,
473 QueueIdStack(queueId, returnQueueId)));
474
475 request->binaryRequest = true;
476
477 STAT_SERVERSTART
478
479 return request.release();
480 }
481
|
482 kumpf 1.6 static CIMEnumerateInstanceNamesResponseMessage*
|
483 mike 1.1 _decodeEnumerateInstanceNamesResponse(
484 CIMBuffer& in,
485 const String& messageId)
486 {
487 CIMEnumerateInstanceNamesResponseMessage* msg;
488 CIMException cimException;
489
490 msg = new CIMEnumerateInstanceNamesResponseMessage(
491 messageId,
492 cimException,
|
493 thilo.boehm 1.10 QueueIdStack());
494
|
495 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
496 thilo.boehm 1.10 // to a later point in time when the data is actually retrieved through
|
497 karl 1.12.2.1 // a call to CIMResponseData::getInstanceNames, which
498 // resolves the binary data as it is passed to the next interface.
|
499 thilo.boehm 1.10 // This allows an alternate client implementation to gain direct access
500 // to the binary data and pass this for example to the JNI implementation
501 // of the JSR48 CIM Client for Java.
502 CIMResponseData& responseData = msg->getResponseData();
|
503 karl 1.12 responseData.setRemainingBinaryData(in);
|
504 mike 1.1
505 msg->binaryRequest = true;
506 return msg;
507 }
508
509 static void _encodeEnumerateInstanceNamesRequest(
510 CIMBuffer& buf,
511 CIMEnumerateInstanceNamesRequestMessage* msg,
512 CIMName& name)
513 {
514 static const CIMName NAME("EnumerateInstanceNames");
515 name = NAME;
516
517 // [HEADER]
518
519 _putHeader(buf, 0, msg->messageId, OP_EnumerateInstanceNames);
520
521 // [NAMESPACE]
522 buf.putNamespaceName(msg->nameSpace);
523
524 // [CLASSNAME]
525 mike 1.1 buf.putName(msg->className);
526 }
527
528 static void _encodeEnumerateInstanceNamesResponseBody(
529 CIMBuffer& out,
|
530 thilo.boehm 1.10 CIMResponseData& data,
|
531 mike 1.1 CIMName& name)
532 {
533 static const CIMName NAME("EnumerateInstanceNames");
534 name = NAME;
535
|
536 thilo.boehm 1.10 data.encodeBinaryResponse(out);
|
537 mike 1.1 }
538
539 //==============================================================================
540 //
541 // GetInstance
542 //
543 //==============================================================================
544
545 static CIMGetInstanceRequestMessage* _decodeGetInstanceRequest(
546 CIMBuffer& in,
547 Uint32 queueId,
548 Uint32 returnQueueId,
549 Uint32 flags,
550 const String& messageId)
551 {
552 STAT_GETSTARTTIME
553
554 // [FLAGS]
|
555 karl 1.12.2.5 #ifndef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
|
556 mike 1.1 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
|
557 karl 1.12.2.5 #endif
|
558 mike 1.1 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
559
560 // [NAMESPACE]
561 CIMNamespaceName nameSpace;
562
563 if (!in.getNamespaceName(nameSpace))
564 return 0;
565
566 // [INSTANCE-NAME]
567 CIMObjectPath instanceName;
568
569 if (!in.getObjectPath(instanceName))
570 return 0;
571
572 // [PROPERTY-LIST]
573 CIMPropertyList propertyList;
574 if (!in.getPropertyList(propertyList))
575 return 0;
576
577 AutoPtr<CIMGetInstanceRequestMessage> request(
578 new CIMGetInstanceRequestMessage(
579 mike 1.1 messageId,
580 nameSpace,
581 instanceName,
582 #ifdef PEGASUS_DISABLE_INSTANCE_QUALIFIERS
583 false,
584 #else
585 includeQualifiers,
586 #endif
587 includeClassOrigin,
588 propertyList,
589 QueueIdStack(queueId, returnQueueId)));
590
591 request->binaryRequest = true;
592
593 STAT_SERVERSTART
594
595 return request.release();
596 }
597
598 static CIMGetInstanceResponseMessage* _decodeGetInstanceResponse(
599 CIMBuffer& in,
600 mike 1.1 const String& messageId)
601 {
602 CIMGetInstanceResponseMessage* msg;
603 CIMException cimException;
604
605 msg = new CIMGetInstanceResponseMessage(
606 messageId,
607 cimException,
608 QueueIdStack());
609
|
610 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
611 r.kieninger 1.9 // to a later point in time when the data is actually retrieved through
|
612 karl 1.12.2.1 // a call to CIMResponseData::getInstances, which
613 // resolves the binary data as it is passed to the next interface.
|
614 r.kieninger 1.9 // This allows an alternate client implementation to gain direct access
615 // to the binary data and pass this for example to the JNI implementation
616 // of the JSR48 CIM Client for Java.
|
617 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
618 karl 1.12 responseData.setRemainingBinaryData(in);
|
619 r.kieninger 1.9
|
620 mike 1.1 msg->binaryRequest = true;
621 return msg;
622 }
623
624 static void _encodeGetInstanceRequest(
625 CIMBuffer& buf,
626 CIMGetInstanceRequestMessage* msg,
627 CIMName& name)
628 {
629 static const CIMName NAME("GetInstance");
630 name = NAME;
631
632 // [HEADER]
633
634 Uint32 flags = 0;
635
636 if (msg->includeQualifiers)
637 flags |= INCLUDE_QUALIFIERS;
638
639 if (msg->includeClassOrigin)
640 flags |= INCLUDE_CLASS_ORIGIN;
641 mike 1.1
642 _putHeader(buf, flags, msg->messageId, OP_GetInstance);
643
644 // [NAMESPACE]
645 buf.putNamespaceName(msg->nameSpace);
646
647 // [INSTANCE-NAME]
648 buf.putObjectPath(msg->instanceName);
649
650 // [PROPERTY-LIST]
651 buf.putPropertyList(msg->propertyList);
652 }
653
654 static void _encodeGetInstanceResponseBody(
655 CIMBuffer& out,
|
656 thilo.boehm 1.10 CIMResponseData& data,
|
657 mike 1.1 CIMName& name)
658 {
659 static const CIMName NAME("GetInstance");
660 name = NAME;
661
|
662 r.kieninger 1.8 data.encodeBinaryResponse(out);
|
663 mike 1.1 }
664
665 //==============================================================================
666 //
667 // CreateInstance
668 //
669 //==============================================================================
670
671 static void _encodeCreateInstanceRequest(
672 CIMBuffer& buf,
673 CIMCreateInstanceRequestMessage* msg,
674 CIMName& name)
675 {
676 static const CIMName NAME("CreateInstance");
677 name = NAME;
678
679 // [HEADER]
680 _putHeader(buf, 0, msg->messageId, OP_CreateInstance);
681
682 // [NAMESPACE]
683 buf.putNamespaceName(msg->nameSpace);
684 mike 1.1
685 // [NEW-INSTANCE]
686 buf.putInstance(msg->newInstance, false);
687 }
688
689 static CIMCreateInstanceRequestMessage* _decodeCreateInstanceRequest(
690 CIMBuffer& in,
691 Uint32 queueId,
692 Uint32 returnQueueId,
693 const String& messageId)
694 {
695 STAT_GETSTARTTIME
696
697 // [NAMESPACE]
698
699 CIMNamespaceName nameSpace;
700
701 if (!in.getNamespaceName(nameSpace))
702 return 0;
703
704 // [NEW-INSTANCE]
705 mike 1.1
706 CIMInstance newInstance;
707
708 if (!in.getInstance(newInstance))
709 return 0;
710
711 AutoPtr<CIMCreateInstanceRequestMessage> request(
712 new CIMCreateInstanceRequestMessage(
713 messageId,
714 nameSpace,
715 newInstance,
716 QueueIdStack(queueId, returnQueueId)));
717
718 request->binaryRequest = true;
719
720 STAT_SERVERSTART
721
722 return request.release();
723 }
724
725 static void _encodeCreateInstanceResponseBody(
726 mike 1.1 CIMBuffer& out,
727 CIMCreateInstanceResponseMessage* msg,
728 CIMName& name)
729 {
730 static const CIMName NAME("CreateInstance");
731 name = NAME;
732
733 out.putObjectPath(msg->instanceName, false);
734 }
735
736 static CIMCreateInstanceResponseMessage* _decodeCreateInstanceResponse(
737 CIMBuffer& in,
738 const String& messageId)
739 {
740 CIMObjectPath instanceName;
741
742 if (!in.getObjectPath(instanceName))
743 return 0;
744
745 CIMCreateInstanceResponseMessage* msg;
746 CIMException cimException;
747 mike 1.1
748 msg = new CIMCreateInstanceResponseMessage(
749 messageId,
750 cimException,
751 QueueIdStack(),
752 instanceName);
753
754 msg->binaryRequest = true;
755
756 return msg;
757 }
758
759 //==============================================================================
760 //
761 // ModifyInstance
762 //
763 //==============================================================================
764
765 static void _encodeModifyInstanceRequest(
766 CIMBuffer& buf,
767 CIMModifyInstanceRequestMessage* msg,
768 mike 1.1 CIMName& name)
769 {
770 /* See ../Client/CIMOperationRequestEncoder.cpp */
771
772 static const CIMName NAME("ModifyInstance");
773 name = NAME;
774
775 // [HEADER]
776
777 Uint32 flags = 0;
778
779 if (msg->includeQualifiers)
780 flags |= INCLUDE_QUALIFIERS;
781
782 _putHeader(buf, flags, msg->messageId, OP_ModifyInstance);
783
784 // [NAMESPACE]
785 buf.putNamespaceName(msg->nameSpace);
786
787 // [MODIFIED-INSTANCE]
788 buf.putInstance(msg->modifiedInstance, false);
789 mike 1.1
790 // [PROPERTY-LIST]
791 buf.putPropertyList(msg->propertyList);
792 }
793
794 static CIMModifyInstanceRequestMessage* _decodeModifyInstanceRequest(
795 CIMBuffer& in,
796 Uint32 queueId,
797 Uint32 returnQueueId,
798 Uint32 flags,
799 const String& messageId)
800 {
801 /* See ../Server/CIMOperationRequestDecoder.cpp */
802
803 STAT_GETSTARTTIME
804
805 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
806
807 // [NAMESPACE]
808
809 CIMNamespaceName nameSpace;
810 mike 1.1
811 if (!in.getNamespaceName(nameSpace))
812 return 0;
813
814 // [MODIFIED-INSTANCE]
815 CIMInstance modifiedInstance;
816
817 if (!in.getInstance(modifiedInstance))
818 return 0;
819
820 // [PROPERTY-LIST]
821 CIMPropertyList propertyList;
822 if (!in.getPropertyList(propertyList))
823 return 0;
824
825 AutoPtr<CIMModifyInstanceRequestMessage> request(
826 new CIMModifyInstanceRequestMessage(
827 messageId,
828 nameSpace,
829 modifiedInstance,
830 includeQualifiers,
831 mike 1.1 propertyList,
832 QueueIdStack(queueId, returnQueueId)));
833
834 request->binaryRequest = true;
835
836 STAT_SERVERSTART
837
838 return request.release();
839 }
840
841 static void _encodeModifyInstanceResponseBody(
842 CIMName& name)
843 {
844 /* See ../Server/CIMOperationResponseEncoder.cpp */
845
846 static const CIMName NAME("ModifyInstance");
847 name = NAME;
848 }
849
850 static CIMModifyInstanceResponseMessage* _decodeModifyInstanceResponse(
851 CIMBuffer& in,
852 mike 1.1 const String& messageId)
853 {
854 /* See ../Client/CIMOperationResponseDecoder.cpp */
855
856 Array<CIMInstance> instances;
857
858 while (in.more())
859 {
860 Array<CIMInstance> tmp;
861
862 if (!in.getInstanceA(tmp))
863 return 0;
864
865 instances.append(tmp.getData(), tmp.size());
866 }
867
868 CIMModifyInstanceResponseMessage* msg;
869 CIMException cimException;
870
871 msg = new CIMModifyInstanceResponseMessage(
872 messageId,
873 mike 1.1 cimException,
874 QueueIdStack());
875
876 msg->binaryRequest = true;
877 return msg;
878 }
879
880 //==============================================================================
881 //
882 // DeleteInstance
883 //
884 //==============================================================================
885
886 static void _encodeDeleteInstanceRequest(
887 CIMBuffer& buf,
888 CIMDeleteInstanceRequestMessage* msg,
889 CIMName& name)
890 {
891 /* See ../Client/CIMOperationRequestEncoder.cpp */
892
893 static const CIMName NAME("DeleteInstance");
894 mike 1.1 name = NAME;
895
896 // [HEADER]
897 _putHeader(buf, 0, msg->messageId, OP_DeleteInstance);
898
899 // [NAMESPACE]
900 buf.putNamespaceName(msg->nameSpace);
901
902 // [INSTANCE-NAME]
903 buf.putObjectPath(msg->instanceName, false);
904 }
905
906 static CIMDeleteInstanceRequestMessage* _decodeDeleteInstanceRequest(
907 CIMBuffer& in,
908 Uint32 queueId,
909 Uint32 returnQueueId,
910 const String& messageId)
911 {
912 /* See ../Server/CIMOperationRequestDecoder.cpp */
913
914 STAT_GETSTARTTIME
915 mike 1.1
916 // [NAMESPACE]
917 CIMNamespaceName nameSpace;
918
919 if (!in.getNamespaceName(nameSpace))
920 return 0;
921
922 // [INSTANCE-NAME]
923 CIMObjectPath instanceName;
924
925 if (!in.getObjectPath(instanceName))
926 return 0;
927
928 AutoPtr<CIMDeleteInstanceRequestMessage> request(
929 new CIMDeleteInstanceRequestMessage(
930 messageId,
931 nameSpace,
932 instanceName,
933 QueueIdStack(queueId, returnQueueId)));
934
935 request->binaryRequest = true;
936 mike 1.1
937 STAT_SERVERSTART
938
939 return request.release();
940 }
941
942 static void _encodeDeleteInstanceResponseBody(
943 CIMName& name)
944 {
945 /* See ../Server/CIMOperationResponseEncoder.cpp */
946
947 static const CIMName NAME("DeleteInstance");
948 name = NAME;
949 }
950
951 static CIMDeleteInstanceResponseMessage* _decodeDeleteInstanceResponse(
952 const String& messageId)
953 {
954 /* See ../Client/CIMOperationResponseDecoder.cpp */
955
956 CIMDeleteInstanceResponseMessage* msg;
957 mike 1.1 CIMException cimException;
958
959 msg = new CIMDeleteInstanceResponseMessage(
960 messageId,
961 cimException,
962 QueueIdStack());
963
964 msg->binaryRequest = true;
965 return msg;
966 }
967
968 //==============================================================================
969 //
970 // Associators
971 //
972 //==============================================================================
973
974 static void _encodeAssociatorsRequest(
975 CIMBuffer& buf,
976 CIMAssociatorsRequestMessage* msg,
977 CIMName& name)
978 mike 1.1 {
979 /* See ../Client/CIMOperationRequestEncoder.cpp */
980
981 static const CIMName NAME("Associators");
982 name = NAME;
983
984 // [HEADER]
985
986 Uint32 flags = 0;
987
988 if (msg->includeQualifiers)
989 flags |= INCLUDE_QUALIFIERS;
990
991 if (msg->includeClassOrigin)
992 flags |= INCLUDE_CLASS_ORIGIN;
993
994 _putHeader(buf, flags, msg->messageId, OP_Associators);
995
996 // [NAMESPACE]
997 buf.putNamespaceName(msg->nameSpace);
998
999 mike 1.1 // [OBJECT-NAME]
1000 buf.putObjectPath(msg->objectName);
1001
1002 // [ASSOC-CLASS]
1003 buf.putName(msg->assocClass);
1004
1005 // [RESULT-CLASS]
1006 buf.putName(msg->resultClass);
1007
1008 // [ROLE]
1009 buf.putString(msg->role);
1010
1011 // [RESULT-ROLE]
1012 buf.putString(msg->resultRole);
1013
1014 // [PROPERTY-LIST]
1015 buf.putPropertyList(msg->propertyList);
1016 }
1017
1018 static CIMAssociatorsRequestMessage* _decodeAssociatorsRequest(
1019 CIMBuffer& in,
1020 mike 1.1 Uint32 queueId,
1021 Uint32 returnQueueId,
1022 Uint32 flags,
1023 const String& messageId)
1024 {
1025 /* See ../Server/CIMOperationRequestDecoder.cpp */
1026
1027 STAT_GETSTARTTIME
1028
1029 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
1030 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
1031
1032 // [NAMESPACE]
1033
1034 CIMNamespaceName nameSpace;
1035
1036 if (!in.getNamespaceName(nameSpace))
1037 return 0;
1038
1039 // [OBJECT-NAME]
1040 CIMObjectPath objectName;
1041 mike 1.1
1042 if (!in.getObjectPath(objectName))
1043 return 0;
1044
1045 // [ASSOC-CLASS]
1046
1047 CIMName assocClass;
1048
1049 if (!in.getName(assocClass))
1050 return 0;
1051
1052 // [RESULT-CLASS]
1053
1054 CIMName resultClass;
1055
1056 if (!in.getName(resultClass))
1057 return 0;
1058
1059 // [ROLE]
1060
1061 String role;
1062 mike 1.1
1063 if (!in.getString(role))
1064 return 0;
1065
1066 // [RESULT-ROLE]
1067
1068 String resultRole;
1069
1070 if (!in.getString(resultRole))
1071 return 0;
1072
1073 // [PROPERTY-LIST]
1074
1075 CIMPropertyList propertyList;
1076
1077 if (!in.getPropertyList(propertyList))
1078 return 0;
1079
1080 AutoPtr<CIMAssociatorsRequestMessage> request(
1081 new CIMAssociatorsRequestMessage(
1082 messageId,
1083 mike 1.1 nameSpace,
1084 objectName,
1085 assocClass,
1086 resultClass,
1087 role,
1088 resultRole,
1089 includeQualifiers,
1090 includeClassOrigin,
1091 propertyList,
1092 QueueIdStack(queueId, returnQueueId)));
1093
1094 request->binaryRequest = true;
1095
1096 STAT_SERVERSTART
1097
1098 return request.release();
1099 }
1100
1101 static void _encodeAssociatorsResponseBody(
1102 CIMBuffer& out,
|
1103 thilo.boehm 1.10 CIMResponseData& data,
|
1104 mike 1.1 CIMName& name)
1105 {
1106 /* See ../Server/CIMOperationResponseEncoder.cpp */
1107
1108 static const CIMName NAME("Associators");
1109 name = NAME;
1110
|
1111 r.kieninger 1.8
1112 data.encodeBinaryResponse(out);
|
1113 mike 1.1 }
1114
1115 static CIMAssociatorsResponseMessage* _decodeAssociatorsResponse(
1116 CIMBuffer& in,
1117 const String& messageId)
1118 {
1119 CIMAssociatorsResponseMessage* msg;
1120 CIMException cimException;
1121
1122 msg = new CIMAssociatorsResponseMessage(
1123 messageId,
1124 cimException,
|
1125 r.kieninger 1.8 QueueIdStack());
|
1126 mike 1.1
|
1127 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
1128 r.kieninger 1.9 // to a later point in time when the data is actually retrieved through
|
1129 karl 1.12.2.1 // a call to CIMResponseData::getObjects, which
1130 // resolves the binary data as it is passed to the next interface.
|
1131 r.kieninger 1.9 // This allows an alternate client implementation to gain direct access
1132 // to the binary data and pass this for example to the JNI implementation
1133 // of the JSR48 CIM Client for Java.
|
1134 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
1135 karl 1.12 responseData.setRemainingBinaryData(in);
|
1136 r.kieninger 1.9
|
1137 mike 1.1 msg->binaryRequest = true;
1138 return msg;
1139 }
1140
1141 //==============================================================================
1142 //
1143 // AssociatorNames
1144 //
1145 //==============================================================================
1146
1147 static void _encodeAssociatorNamesRequest(
1148 CIMBuffer& buf,
1149 CIMAssociatorNamesRequestMessage* msg,
1150 CIMName& name)
1151 {
1152 /* See ../Client/CIMOperationRequestEncoder.cpp */
1153
1154 static const CIMName NAME("AssociatorNames");
1155 name = NAME;
1156
1157 // [HEADER]
1158 mike 1.1 Uint32 flags = 0;
1159
1160 _putHeader(buf, flags, msg->messageId, OP_AssociatorNames);
1161
1162 // [NAMESPACE]
1163 buf.putNamespaceName(msg->nameSpace);
1164
1165 // [OBJECT-NAME]
1166 buf.putObjectPath(msg->objectName);
1167
1168 // [ASSOC-CLASS]
1169 buf.putName(msg->assocClass);
1170
1171 // [RESULT-CLASS]
1172 buf.putName(msg->resultClass);
1173
1174 // [ROLE]
1175 buf.putString(msg->role);
1176
1177 // [RESULT-ROLE]
1178 buf.putString(msg->resultRole);
1179 mike 1.1 }
1180
1181 static CIMAssociatorNamesRequestMessage* _decodeAssociatorNamesRequest(
1182 CIMBuffer& in,
1183 Uint32 queueId,
1184 Uint32 returnQueueId,
1185 const String& messageId)
1186 {
1187 /* See ../Server/CIMOperationRequestDecoder.cpp */
1188
1189 STAT_GETSTARTTIME
1190
1191 // [NAMESPACE]
1192
1193 CIMNamespaceName nameSpace;
1194
1195 if (!in.getNamespaceName(nameSpace))
1196 return 0;
1197
1198 // [OBJECT-NAME]
1199 CIMObjectPath objectName;
1200 mike 1.1
1201 if (!in.getObjectPath(objectName))
1202 return 0;
1203
1204 // [ASSOC-CLASS]
1205
1206 CIMName assocClass;
1207
1208 if (!in.getName(assocClass))
1209 return 0;
1210
1211 // [RESULT-CLASS]
1212
1213 CIMName resultClass;
1214
1215 if (!in.getName(resultClass))
1216 return 0;
1217
1218 // [ROLE]
1219
1220 String role;
1221 mike 1.1
1222 if (!in.getString(role))
1223 return 0;
1224
1225 // [RESULT-ROLE]
1226
1227 String resultRole;
1228
1229 if (!in.getString(resultRole))
1230 return 0;
1231
1232 AutoPtr<CIMAssociatorNamesRequestMessage> request(
1233 new CIMAssociatorNamesRequestMessage(
1234 messageId,
1235 nameSpace,
1236 objectName,
1237 assocClass,
1238 resultClass,
1239 role,
1240 resultRole,
1241 QueueIdStack(queueId, returnQueueId)));
1242 mike 1.1
1243 request->binaryRequest = true;
1244
1245 STAT_SERVERSTART
1246
1247 return request.release();
1248 }
1249
1250 static void _encodeAssociatorNamesResponseBody(
1251 CIMBuffer& out,
|
1252 thilo.boehm 1.10 CIMResponseData& data,
|
1253 mike 1.1 CIMName& name)
1254 {
1255 /* See ../Server/CIMOperationResponseEncoder.cpp */
1256
1257 static const CIMName NAME("AssociatorNames");
1258 name = NAME;
|
1259 thilo.boehm 1.10 data.encodeBinaryResponse(out);
|
1260 mike 1.1 }
1261
1262 static CIMAssociatorNamesResponseMessage* _decodeAssociatorNamesResponse(
1263 CIMBuffer& in,
1264 const String& messageId)
1265 {
1266 CIMAssociatorNamesResponseMessage* msg;
1267 CIMException cimException;
1268
1269 msg = new CIMAssociatorNamesResponseMessage(
1270 messageId,
1271 cimException,
|
1272 thilo.boehm 1.10 QueueIdStack());
1273
|
1274 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
1275 thilo.boehm 1.10 // to a later point in time when the data is actually retrieved through
|
1276 karl 1.12.2.1 // a call to CIMResponseData::getInstanceNames, which
1277 // resolves the binary data as it is passed to the next interface.
|
1278 thilo.boehm 1.10 // This allows an alternate client implementation to gain direct access
1279 // to the binary data and pass this for example to the JNI implementation
1280 // of the JSR48 CIM Client for Java.
1281 CIMResponseData& responseData = msg->getResponseData();
|
1282 karl 1.12 responseData.setRemainingBinaryData(in);
|
1283 mike 1.1
1284 msg->binaryRequest = true;
1285 return msg;
1286 }
1287
1288 //==============================================================================
1289 //
1290 // References
1291 //
1292 //==============================================================================
1293
1294 static void _encodeReferencesRequest(
1295 CIMBuffer& buf,
1296 CIMReferencesRequestMessage* msg,
1297 CIMName& name)
1298 {
1299 /* See ../Client/CIMOperationRequestEncoder.cpp */
1300
1301 static const CIMName NAME("References");
1302 name = NAME;
1303
1304 mike 1.1 // [HEADER]
1305
1306 Uint32 flags = 0;
1307
1308 if (msg->includeQualifiers)
1309 flags |= INCLUDE_QUALIFIERS;
1310
1311 if (msg->includeClassOrigin)
1312 flags |= INCLUDE_CLASS_ORIGIN;
1313
1314 _putHeader(buf, flags, msg->messageId, OP_References);
1315
1316 // [NAMESPACE]
1317 buf.putNamespaceName(msg->nameSpace);
1318
1319 // [OBJECT-NAME]
1320 buf.putObjectPath(msg->objectName);
1321
1322 // [RESULT-CLASS]
1323 buf.putName(msg->resultClass);
1324
1325 mike 1.1 // [ROLE]
1326 buf.putString(msg->role);
1327
1328 // [PROPERTY-LIST]
1329 buf.putPropertyList(msg->propertyList);
1330 }
1331
1332 static CIMReferencesRequestMessage* _decodeReferencesRequest(
1333 CIMBuffer& in,
1334 Uint32 queueId,
1335 Uint32 returnQueueId,
1336 Uint32 flags,
1337 const String& messageId)
1338 {
1339 /* See ../Server/CIMOperationRequestDecoder.cpp */
1340
1341 STAT_GETSTARTTIME
1342
1343 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
1344 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
1345
1346 mike 1.1 // [NAMESPACE]
1347
1348 CIMNamespaceName nameSpace;
1349
1350 if (!in.getNamespaceName(nameSpace))
1351 return 0;
1352
1353 // [OBJECT-NAME]
1354
1355 CIMObjectPath objectName;
1356
1357 if (!in.getObjectPath(objectName))
1358 return 0;
1359
1360 // [RESULT-CLASS]
1361
1362 CIMName resultClass;
1363
1364 if (!in.getName(resultClass))
1365 return 0;
1366
1367 mike 1.1 // [ROLE]
1368
1369 String role;
1370
1371 if (!in.getString(role))
1372 return 0;
1373
1374 // [PROPERTY-LIST]
1375
1376 CIMPropertyList propertyList;
1377
1378 if (!in.getPropertyList(propertyList))
1379 return 0;
1380
1381 AutoPtr<CIMReferencesRequestMessage> request(
1382 new CIMReferencesRequestMessage(
1383 messageId,
1384 nameSpace,
1385 objectName,
1386 resultClass,
1387 role,
1388 mike 1.1 includeQualifiers,
1389 includeClassOrigin,
1390 propertyList,
1391 QueueIdStack(queueId, returnQueueId)));
1392
1393 request->binaryRequest = true;
1394
1395 STAT_SERVERSTART
1396
1397 return request.release();
1398 }
1399
1400 static void _encodeReferencesResponseBody(
1401 CIMBuffer& out,
|
1402 thilo.boehm 1.10 CIMResponseData& data,
|
1403 mike 1.1 CIMName& name)
1404 {
1405 /* See ../Server/CIMOperationResponseEncoder.cpp */
1406
1407 static const CIMName NAME("References");
1408 name = NAME;
1409
|
1410 thilo.boehm 1.10 data.encodeBinaryResponse(out);
|
1411 mike 1.1 }
1412
1413 static CIMReferencesResponseMessage* _decodeReferencesResponse(
1414 CIMBuffer& in,
1415 const String& messageId)
1416 {
1417 CIMReferencesResponseMessage* msg;
1418 CIMException cimException;
1419
1420 msg = new CIMReferencesResponseMessage(
1421 messageId,
1422 cimException,
|
1423 thilo.boehm 1.10 QueueIdStack());
1424
1425 // Instead of resolving the binary data right here, we delegate this
1426 // to a later point in time when the data is actually retrieved through
1427 // a call to getNamedInstances, which is going to resolve the binary
1428 // data when the callback function is registered.
1429 // This allows an alternate client implementation to gain direct access
1430 // to the binary data and pass this for example to the JNI implementation
1431 // of the JSR48 CIM Client for Java.
1432 CIMResponseData& responseData = msg->getResponseData();
|
1433 karl 1.12 responseData.setRemainingBinaryData(in);
|
1434 mike 1.1
1435 msg->binaryRequest = true;
1436 return msg;
1437 }
1438
1439 //==============================================================================
1440 //
1441 // ReferenceNames
1442 //
1443 //==============================================================================
1444
1445 static void _encodeReferenceNamesRequest(
1446 CIMBuffer& buf,
1447 CIMReferenceNamesRequestMessage* msg,
1448 CIMName& name)
1449 {
1450 /* See ../Client/CIMOperationRequestEncoder.cpp */
1451
1452 static const CIMName NAME("ReferenceNames");
1453 name = NAME;
1454
1455 mike 1.1 // [HEADER]
1456 Uint32 flags = 0;
1457
1458 _putHeader(buf, flags, msg->messageId, OP_ReferenceNames);
1459
1460 // [NAMESPACE]
1461 buf.putNamespaceName(msg->nameSpace);
1462
1463 // [OBJECT-NAME]
1464 buf.putObjectPath(msg->objectName);
1465
1466 // [RESULT-CLASS]
1467 buf.putName(msg->resultClass);
1468
1469 // [ROLE]
1470 buf.putString(msg->role);
1471 }
1472
1473 static CIMReferenceNamesRequestMessage* _decodeReferenceNamesRequest(
1474 CIMBuffer& in,
1475 Uint32 queueId,
1476 mike 1.1 Uint32 returnQueueId,
1477 const String& messageId)
1478 {
1479 /* See ../Server/CIMOperationRequestDecoder.cpp */
1480
1481 STAT_GETSTARTTIME
1482
1483 // [NAMESPACE]
1484
1485 CIMNamespaceName nameSpace;
1486
1487 if (!in.getNamespaceName(nameSpace))
1488 return 0;
1489
1490 // [OBJECT-NAME]
1491 CIMObjectPath objectName;
1492
1493 if (!in.getObjectPath(objectName))
1494 return 0;
1495
1496 // [RESULT-CLASS]
1497 mike 1.1
1498 CIMName resultClass;
1499
1500 if (!in.getName(resultClass))
1501 return 0;
1502
1503 // [ROLE]
1504
1505 String role;
1506
1507 if (!in.getString(role))
1508 return 0;
1509
1510 AutoPtr<CIMReferenceNamesRequestMessage> request(
1511 new CIMReferenceNamesRequestMessage(
1512 messageId,
1513 nameSpace,
1514 objectName,
1515 resultClass,
1516 role,
1517 QueueIdStack(queueId, returnQueueId)));
1518 mike 1.1
1519 request->binaryRequest = true;
1520
1521 STAT_SERVERSTART
1522
1523 return request.release();
1524 }
1525
1526 static void _encodeReferenceNamesResponseBody(
1527 CIMBuffer& out,
|
1528 thilo.boehm 1.10 CIMResponseData& data,
|
1529 mike 1.1 CIMName& name)
1530 {
1531 /* See ../Server/CIMOperationResponseEncoder.cpp */
1532
1533 static const CIMName NAME("ReferenceNames");
1534 name = NAME;
|
1535 thilo.boehm 1.10 data.encodeBinaryResponse(out);
|
1536 mike 1.1 }
1537
1538 static CIMReferenceNamesResponseMessage* _decodeReferenceNamesResponse(
1539 CIMBuffer& in,
1540 const String& messageId)
1541 {
1542 /* See ../Client/CIMOperationResponseDecoder.cpp */
1543
1544 CIMReferenceNamesResponseMessage* msg;
1545 CIMException cimException;
1546
1547 msg = new CIMReferenceNamesResponseMessage(
1548 messageId,
1549 cimException,
|
1550 thilo.boehm 1.10 QueueIdStack());
1551
|
1552 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
|
1553 thilo.boehm 1.10 // to a later point in time when the data is actually retrieved through
|
1554 karl 1.12.2.1 // a call to CIMResponseData::getInstanceNames, which
1555 // resolves the binary data as it is passed to the next interface.
|
1556 thilo.boehm 1.10 // This allows an alternate client implementation to gain direct access
1557 // to the binary data and pass this for example to the JNI implementation
1558 // of the JSR48 CIM Client for Java.
1559 CIMResponseData& responseData = msg->getResponseData();
|
1560 karl 1.12 responseData.setRemainingBinaryData(in);
|
1561 mike 1.1
1562 msg->binaryRequest = true;
|
1563 thilo.boehm 1.10
|
1564 mike 1.1 return msg;
1565 }
1566
1567 //==============================================================================
1568 //
1569 // GetClass
1570 //
1571 //==============================================================================
1572
1573 static void _encodeGetClassRequest(
1574 CIMBuffer& buf,
1575 CIMGetClassRequestMessage* msg,
1576 CIMName& name)
1577 {
1578 /* See ../Client/CIMOperationRequestEncoder.cpp */
1579
1580 static const CIMName NAME("GetClass");
1581 name = NAME;
1582
1583 // [HEADER]
1584
1585 mike 1.1 Uint32 flags = 0;
1586
1587 if (msg->localOnly)
1588 flags |= LOCAL_ONLY;
1589
1590 if (msg->includeQualifiers)
1591 flags |= INCLUDE_QUALIFIERS;
1592
1593 if (msg->includeClassOrigin)
1594 flags |= INCLUDE_CLASS_ORIGIN;
1595
1596 _putHeader(buf, flags, msg->messageId, OP_GetClass);
1597
1598 // [NAMESPACE]
1599 buf.putNamespaceName(msg->nameSpace);
1600
1601 // [CLASSNAME]
1602 buf.putName(msg->className);
1603
1604 // [PROPERTY-LIST]
1605 buf.putPropertyList(msg->propertyList);
1606 mike 1.1 }
1607
1608 static CIMGetClassRequestMessage* _decodeGetClassRequest(
1609 CIMBuffer& in,
1610 Uint32 queueId,
1611 Uint32 returnQueueId,
1612 Uint32 flags,
1613 const String& messageId)
1614 {
1615 /* See ../Server/CIMOperationRequestDecoder.cpp */
1616
1617 STAT_GETSTARTTIME
1618
1619 Boolean localOnly = flags & LOCAL_ONLY;
1620 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
1621 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
1622
1623 // [NAMESPACE]
1624
1625 CIMNamespaceName nameSpace;
1626
1627 mike 1.1 if (!in.getNamespaceName(nameSpace))
1628 return 0;
1629
1630 // [CLASSNAME]
1631 CIMName className;
1632
1633 if (!in.getName(className))
1634 return 0;
1635
1636 // [PROPERTY-LIST]
1637 CIMPropertyList propertyList;
1638 if (!in.getPropertyList(propertyList))
1639 return 0;
1640
1641 AutoPtr<CIMGetClassRequestMessage> request(new CIMGetClassRequestMessage(
1642 messageId,
1643 nameSpace,
1644 className,
1645 localOnly,
1646 includeQualifiers,
1647 includeClassOrigin,
1648 mike 1.1 propertyList,
1649 QueueIdStack(queueId, returnQueueId)));
1650
1651 request->binaryRequest = true;
1652
1653 STAT_SERVERSTART
1654
1655 return request.release();
1656 }
1657
1658 static void _encodeGetClassResponseBody(
1659 CIMBuffer& out,
1660 CIMGetClassResponseMessage* msg,
1661 CIMName& name)
1662 {
1663 /* See ../Server/CIMOperationResponseEncoder.cpp */
1664
1665 static const CIMName NAME("GetClass");
1666 name = NAME;
1667
1668 out.putClass(msg->cimClass);
1669 mike 1.1 }
1670
1671 static CIMGetClassResponseMessage* _decodeGetClassResponse(
1672 CIMBuffer& in,
1673 const String& messageId)
1674 {
1675 /* See ../Client/CIMOperationResponseDecoder.cpp */
1676
1677 CIMClass cimClass;
1678
1679 if (!in.getClass(cimClass))
1680 return 0;
1681
1682 CIMGetClassResponseMessage* msg;
1683 CIMException cimException;
1684
1685 msg = new CIMGetClassResponseMessage(
1686 messageId,
1687 cimException,
1688 QueueIdStack(),
1689 cimClass);
1690 mike 1.1
1691 msg->binaryRequest = true;
1692 return msg;
1693 }
1694
1695 //==============================================================================
1696 //
1697 // EnumerateClasses
1698 //
1699 //==============================================================================
1700
1701 static void _encodeEnumerateClassesRequest(
1702 CIMBuffer& buf,
1703 CIMEnumerateClassesRequestMessage* msg,
1704 CIMName& name)
1705 {
1706 /* See ../Client/CIMOperationRequestEncoder.cpp */
1707
1708 static const CIMName NAME("EnumerateClasses");
1709 name = NAME;
1710
1711 mike 1.1 // [HEADER]
1712
1713 Uint32 flags = 0;
1714
1715 if (msg->localOnly)
1716 flags |= LOCAL_ONLY;
1717
1718 if (msg->deepInheritance)
1719 flags |= DEEP_INHERITANCE;
1720
1721 if (msg->includeQualifiers)
1722 flags |= INCLUDE_QUALIFIERS;
1723
1724 if (msg->includeClassOrigin)
1725 flags |= INCLUDE_CLASS_ORIGIN;
1726
1727 _putHeader(buf, flags, msg->messageId, OP_EnumerateClasses);
1728
1729 // [NAMESPACE]
1730 buf.putNamespaceName(msg->nameSpace);
1731
1732 mike 1.1 // [CLASSNAME]
1733 buf.putName(msg->className);
1734 }
1735
1736 static CIMEnumerateClassesRequestMessage* _decodeEnumerateClassesRequest(
1737 CIMBuffer& in,
1738 Uint32 queueId,
1739 Uint32 returnQueueId,
1740 Uint32 flags,
1741 const String& messageId)
1742 {
1743 /* See ../Server/CIMOperationRequestDecoder.cpp */
1744
1745 STAT_GETSTARTTIME
1746
1747 Boolean localOnly = flags & LOCAL_ONLY;
1748 Boolean deepInheritance = flags & DEEP_INHERITANCE;
1749 Boolean includeQualifiers = flags & INCLUDE_QUALIFIERS;
1750 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
1751
1752 // [NAMESPACE]
1753 mike 1.1
1754 CIMNamespaceName nameSpace;
1755
1756 if (!in.getNamespaceName(nameSpace))
1757 return 0;
1758
1759 // [CLASSNAME]
1760 CIMName className;
1761
1762 if (!in.getName(className))
1763 return 0;
1764
1765 AutoPtr<CIMEnumerateClassesRequestMessage> request(
1766 new CIMEnumerateClassesRequestMessage(
1767 messageId,
1768 nameSpace,
1769 className,
1770 deepInheritance,
1771 localOnly,
1772 includeQualifiers,
1773 includeClassOrigin,
1774 mike 1.1 QueueIdStack(queueId, returnQueueId)));
1775
1776 request->binaryRequest = true;
1777
1778 STAT_SERVERSTART
1779
1780 return request.release();
1781 }
1782
1783 static void _encodeEnumerateClassesResponseBody(
1784 CIMBuffer& out,
1785 CIMEnumerateClassesResponseMessage* msg,
1786 CIMName& name)
1787 {
1788 /* See ../Server/CIMOperationResponseEncoder.cpp */
1789
1790 static const CIMName NAME("EnumerateClasses");
1791 name = NAME;
1792
1793 out.putClassA(msg->cimClasses);
1794 }
1795 mike 1.1
1796 static CIMEnumerateClassesResponseMessage* _decodeEnumerateClassesResponse(
1797 CIMBuffer& in,
1798 const String& messageId)
1799 {
1800 /* See ../Client/CIMOperationResponseDecoder.cpp */
1801
1802 Array<CIMClass> cimClasses;
1803
1804 while (in.more())
1805 {
1806 Array<CIMClass> tmp;
1807
1808 if (!in.getClassA(tmp))
1809 return 0;
1810
1811 cimClasses.append(tmp.getData(), tmp.size());
1812 }
1813
1814 CIMEnumerateClassesResponseMessage* msg;
1815 CIMException cimException;
1816 mike 1.1
1817 msg = new CIMEnumerateClassesResponseMessage(
1818 messageId,
1819 cimException,
1820 QueueIdStack(),
1821 cimClasses);
1822
1823 msg->binaryRequest = true;
1824 return msg;
1825 }
1826
1827 //==============================================================================
1828 //
1829 // EnumerateClassNames
1830 //
1831 //==============================================================================
1832
1833 static void _encodeEnumerateClassNamesRequest(
1834 CIMBuffer& buf,
1835 CIMEnumerateClassNamesRequestMessage* msg,
1836 CIMName& name)
1837 mike 1.1 {
1838 /* See ../Client/CIMOperationRequestEncoder.cpp */
1839
1840 static const CIMName NAME("EnumerateClassNames");
1841 name = NAME;
1842
1843 // [HEADER]
1844
1845 Uint32 flags = 0;
1846
1847 if (msg->deepInheritance)
1848 flags |= DEEP_INHERITANCE;
1849
1850 _putHeader(buf, flags, msg->messageId, OP_EnumerateClassNames);
1851
1852 // [NAMESPACE]
1853 buf.putNamespaceName(msg->nameSpace);
1854
1855 // [CLASSNAME]
1856 buf.putName(msg->className);
1857 }
1858 mike 1.1
1859 static CIMEnumerateClassNamesRequestMessage* _decodeEnumerateClassNamesRequest(
1860 CIMBuffer& in,
1861 Uint32 queueId,
1862 Uint32 returnQueueId,
1863 Uint32 flags,
1864 const String& messageId)
1865 {
1866 /* See ../Server/CIMOperationRequestDecoder.cpp */
1867
1868 STAT_GETSTARTTIME
1869
1870 Boolean deepInheritance = flags & DEEP_INHERITANCE;
1871
1872 // [NAMESPACE]
1873
1874 CIMNamespaceName nameSpace;
1875
1876 if (!in.getNamespaceName(nameSpace))
1877 return 0;
1878
1879 mike 1.1 // [CLASSNAME]
1880 CIMName className;
1881
1882 if (!in.getName(className))
1883 return 0;
1884
1885 AutoPtr<CIMEnumerateClassNamesRequestMessage> request(
1886 new CIMEnumerateClassNamesRequestMessage(
1887 messageId,
1888 nameSpace,
1889 className,
1890 deepInheritance,
1891 QueueIdStack(queueId, returnQueueId)));
1892
1893 request->binaryRequest = true;
1894
1895 STAT_SERVERSTART
1896
1897 return request.release();
1898 }
1899
1900 mike 1.1 static void _encodeEnumerateClassNamesResponseBody(
1901 CIMBuffer& out,
1902 CIMEnumerateClassNamesResponseMessage* msg,
1903 CIMName& name)
1904 {
1905 /* See ../Server/CIMOperationResponseEncoder.cpp */
1906
1907 static const CIMName NAME("EnumerateClassNames");
1908 name = NAME;
1909
1910 out.putNameA(msg->classNames);
1911 }
1912
|
1913 kumpf 1.6 static CIMEnumerateClassNamesResponseMessage*
|
1914 mike 1.1 _decodeEnumerateClassNamesResponse(
1915 CIMBuffer& in,
1916 const String& messageId)
1917 {
1918 /* See ../Client/CIMOperationResponseDecoder.cpp */
1919
1920 Array<CIMName> classNames;
1921
1922 while (in.more())
1923 {
1924 Array<CIMName> tmp;
1925
1926 if (!in.getNameA(tmp))
1927 return 0;
1928
1929 classNames.append(tmp.getData(), tmp.size());
1930 }
1931
1932 CIMEnumerateClassNamesResponseMessage* msg;
1933 CIMException cimException;
1934
1935 mike 1.1 msg = new CIMEnumerateClassNamesResponseMessage(
1936 messageId,
1937 cimException,
1938 QueueIdStack(),
1939 classNames);
1940
1941 msg->binaryRequest = true;
1942 return msg;
1943 }
1944
1945 //==============================================================================
1946 //
1947 // CreateClass
1948 //
1949 //==============================================================================
1950
1951 static void _encodeCreateClassRequest(
1952 CIMBuffer& buf,
1953 CIMCreateClassRequestMessage* msg,
1954 CIMName& name)
1955 {
1956 mike 1.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
1957
1958 static const CIMName NAME("CreateClass");
1959 name = NAME;
1960
1961 // [HEADER]
1962 _putHeader(buf, 0, msg->messageId, OP_CreateClass);
1963
1964 // [NAMESPACE]
1965 buf.putNamespaceName(msg->nameSpace);
1966
1967 // [NEW-CLASS]
1968 buf.putClass(msg->newClass);
1969 }
1970
1971 static CIMCreateClassRequestMessage* _decodeCreateClassRequest(
1972 CIMBuffer& in,
1973 Uint32 queueId,
1974 Uint32 returnQueueId,
1975 const String& messageId)
1976 {
1977 mike 1.1 /* See ../Server/CIMOperationRequestDecoder.cpp */
1978
1979 STAT_GETSTARTTIME
1980
1981 // [NAMESPACE]
1982
1983 CIMNamespaceName nameSpace;
1984
1985 if (!in.getNamespaceName(nameSpace))
1986 return 0;
1987
1988 // [NEW-CLASS]
1989 CIMClass newClass;
1990
1991 if (!in.getClass(newClass))
1992 return 0;
1993
1994 AutoPtr<CIMCreateClassRequestMessage> request(
1995 new CIMCreateClassRequestMessage(
1996 messageId,
1997 nameSpace,
1998 mike 1.1 newClass,
1999 QueueIdStack(queueId, returnQueueId)));
2000
2001 request->binaryRequest = true;
2002
2003 STAT_SERVERSTART
2004
2005 return request.release();
2006 }
2007
2008 static void _encodeCreateClassResponseBody(
2009 CIMName& name)
2010 {
2011 /* See ../Server/CIMOperationResponseEncoder.cpp */
2012
2013 static const CIMName NAME("CreateClass");
2014 name = NAME;
2015 }
2016
2017 static CIMCreateClassResponseMessage* _decodeCreateClassResponse(
2018 const String& messageId)
2019 mike 1.1 {
2020 /* See ../Client/CIMOperationResponseDecoder.cpp */
2021
2022 CIMCreateClassResponseMessage* msg;
2023 CIMException cimException;
2024
2025 msg = new CIMCreateClassResponseMessage(
2026 messageId,
2027 cimException,
2028 QueueIdStack());
2029
2030 msg->binaryRequest = true;
2031 return msg;
2032 }
2033
2034 //==============================================================================
2035 //
2036 // DeleteClass
2037 //
2038 //==============================================================================
2039
2040 mike 1.1 static void _encodeDeleteClassRequest(
2041 CIMBuffer& buf,
2042 CIMDeleteClassRequestMessage* msg,
2043 CIMName& name)
2044 {
2045 /* See ../Client/CIMOperationRequestEncoder.cpp */
2046
2047 static const CIMName NAME("DeleteClass");
2048 name = NAME;
2049
2050 // [HEADER]
2051 _putHeader(buf, 0, msg->messageId, OP_DeleteClass);
2052
2053 // [NAMESPACE]
2054 buf.putNamespaceName(msg->nameSpace);
2055
2056 // [CLASSNAME]
2057 buf.putName(msg->className);
2058 }
2059
2060 static CIMDeleteClassRequestMessage* _decodeDeleteClassRequest(
2061 mike 1.1 CIMBuffer& in,
2062 Uint32 queueId,
2063 Uint32 returnQueueId,
2064 const String& messageId)
2065 {
2066 /* See ../Server/CIMOperationRequestDecoder.cpp */
2067
2068 STAT_GETSTARTTIME
2069
2070 // [NAMESPACE]
2071
2072 CIMNamespaceName nameSpace;
2073
2074 if (!in.getNamespaceName(nameSpace))
2075 return 0;
2076
2077 // [CLASSNAME]
2078 CIMName className;
2079
2080 if (!in.getName(className))
2081 return 0;
2082 mike 1.1
2083 AutoPtr<CIMDeleteClassRequestMessage> request(
2084 new CIMDeleteClassRequestMessage(
2085 messageId,
2086 nameSpace,
2087 className,
2088 QueueIdStack(queueId, returnQueueId)));
2089
2090 request->binaryRequest = true;
2091
2092 STAT_SERVERSTART
2093
2094 return request.release();
2095 }
2096
2097 static void _encodeDeleteClassResponseBody(
2098 CIMName& name)
2099 {
2100 /* See ../Server/CIMOperationResponseEncoder.cpp */
2101
2102 static const CIMName NAME("DeleteClass");
2103 mike 1.1 name = NAME;
2104 }
2105
2106 static CIMDeleteClassResponseMessage* _decodeDeleteClassResponse(
2107 const String& messageId)
2108 {
2109 /* See ../Client/CIMOperationResponseDecoder.cpp */
2110
2111 CIMDeleteClassResponseMessage* msg;
2112 CIMException cimException;
2113
2114 msg = new CIMDeleteClassResponseMessage(
2115 messageId,
2116 cimException,
2117 QueueIdStack());
2118
2119 msg->binaryRequest = true;
2120 return msg;
2121 }
2122
2123 //==============================================================================
2124 mike 1.1 //
2125 // ModifyClass
2126 //
2127 //==============================================================================
2128
2129 static void _encodeModifyClassRequest(
2130 CIMBuffer& buf,
2131 CIMModifyClassRequestMessage* msg,
2132 CIMName& name)
2133 {
2134 /* See ../Client/CIMOperationRequestEncoder.cpp */
2135
2136 static const CIMName NAME("ModifyClass");
2137 name = NAME;
2138
2139 // [HEADER]
2140 _putHeader(buf, 0, msg->messageId, OP_ModifyClass);
2141
2142 // [NAMESPACE]
2143 buf.putNamespaceName(msg->nameSpace);
2144
2145 mike 1.1 // [NEW-CLASS]
2146 buf.putClass(msg->modifiedClass);
2147 }
2148
2149 static CIMModifyClassRequestMessage* _decodeModifyClassRequest(
2150 CIMBuffer& in,
2151 Uint32 queueId,
2152 Uint32 returnQueueId,
2153 const String& messageId)
2154 {
2155 /* See ../Server/CIMOperationRequestDecoder.cpp */
2156
2157 STAT_GETSTARTTIME
2158
2159 // [NAMESPACE]
2160
2161 CIMNamespaceName nameSpace;
2162
2163 if (!in.getNamespaceName(nameSpace))
2164 return 0;
2165
2166 mike 1.1 // [MODIFIED-CLASS]
2167 CIMClass modifiedClass;
2168
2169 if (!in.getClass(modifiedClass))
2170 return 0;
2171
2172 AutoPtr<CIMModifyClassRequestMessage> request(
2173 new CIMModifyClassRequestMessage(
2174 messageId,
2175 nameSpace,
2176 modifiedClass,
2177 QueueIdStack(queueId, returnQueueId)));
2178
2179 request->binaryRequest = true;
2180
2181 STAT_SERVERSTART
2182
2183 return request.release();
2184 }
2185
2186 static void _encodeModifyClassResponseBody(
2187 mike 1.1 CIMName& name)
2188 {
2189 /* See ../Server/CIMOperationResponseEncoder.cpp */
2190
2191 static const CIMName NAME("ModifyClass");
2192 name = NAME;
2193 }
2194
2195 static CIMModifyClassResponseMessage* _decodeModifyClassResponse(
2196 const String& messageId)
2197 {
2198 /* See ../Client/CIMOperationResponseDecoder.cpp */
2199
2200 CIMModifyClassResponseMessage* msg;
2201 CIMException cimException;
2202
2203 msg = new CIMModifyClassResponseMessage(
2204 messageId,
2205 cimException,
2206 QueueIdStack());
2207
2208 mike 1.1 msg->binaryRequest = true;
2209 return msg;
2210 }
2211
2212 //==============================================================================
2213 //
2214 // SetQualifier
2215 //
2216 //==============================================================================
2217
2218 static void _encodeSetQualifierRequest(
2219 CIMBuffer& buf,
2220 CIMSetQualifierRequestMessage* msg,
2221 CIMName& name)
2222 {
2223 /* See ../Client/CIMOperationRequestEncoder.cpp */
2224
2225 static const CIMName NAME("SetQualifier");
2226 name = NAME;
2227
2228 // [HEADER]
2229 mike 1.1 _putHeader(buf, 0, msg->messageId, OP_SetQualifier);
2230
2231 // [NAMESPACE]
2232 buf.putNamespaceName(msg->nameSpace);
2233
2234 // [QUALIFIER-DECLARATION]
2235 buf.putQualifierDecl(msg->qualifierDeclaration);
2236 }
2237
2238 static CIMSetQualifierRequestMessage* _decodeSetQualifierRequest(
2239 CIMBuffer& in,
2240 Uint32 queueId,
2241 Uint32 returnQueueId,
2242 const String& messageId)
2243 {
2244 /* See ../Server/CIMOperationRequestDecoder.cpp */
2245
2246 STAT_GETSTARTTIME
2247
2248 // [NAMESPACE]
2249
2250 mike 1.1 CIMNamespaceName nameSpace;
2251
2252 if (!in.getNamespaceName(nameSpace))
2253 return 0;
2254
2255 // [QUALIFIER.DECLARATION]
2256
2257 CIMQualifierDecl qualifierDeclaration;
2258
2259 if (!in.getQualifierDecl(qualifierDeclaration))
2260 return 0;
2261
2262 AutoPtr<CIMSetQualifierRequestMessage> request(
2263 new CIMSetQualifierRequestMessage(
2264 messageId,
2265 nameSpace,
2266 qualifierDeclaration,
2267 QueueIdStack(queueId, returnQueueId)));
2268
2269 request->binaryRequest = true;
2270
2271 mike 1.1 STAT_SERVERSTART
2272
2273 return request.release();
2274 }
2275
2276 static void _encodeSetQualifierResponseBody(
2277 CIMName& name)
2278 {
2279 /* See ../Server/CIMOperationResponseEncoder.cpp */
2280
2281 static const CIMName NAME("SetQualifier");
2282 name = NAME;
2283 }
2284
2285 static CIMSetQualifierResponseMessage* _decodeSetQualifierResponse(
2286 const String& messageId)
2287 {
2288 /* See ../Client/CIMOperationResponseDecoder.cpp */
2289
2290 CIMSetQualifierResponseMessage* msg;
2291 CIMException cimException;
2292 mike 1.1
2293 msg = new CIMSetQualifierResponseMessage(
2294 messageId,
2295 cimException,
2296 QueueIdStack());
2297
2298 msg->binaryRequest = true;
2299 return msg;
2300 }
2301
2302 //==============================================================================
2303 //
2304 // GetQualifier
2305 //
2306 //==============================================================================
2307
2308 static void _encodeGetQualifierRequest(
2309 CIMBuffer& buf,
2310 CIMGetQualifierRequestMessage* msg,
2311 CIMName& name)
2312 {
2313 mike 1.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
2314
2315 static const CIMName NAME("GetQualifier");
2316 name = NAME;
2317
2318 // [HEADER]
2319 _putHeader(buf, 0, msg->messageId, OP_GetQualifier);
2320
2321 // [NAMESPACE]
2322 buf.putNamespaceName(msg->nameSpace);
2323
2324 // [QUALIFIER-NAME]
2325 buf.putName(msg->qualifierName);
2326 }
2327
2328 static CIMGetQualifierRequestMessage* _decodeGetQualifierRequest(
2329 CIMBuffer& in,
2330 Uint32 queueId,
2331 Uint32 returnQueueId,
2332 const String& messageId)
2333 {
2334 mike 1.1 /* See ../Server/CIMOperationRequestDecoder.cpp */
2335
2336 STAT_GETSTARTTIME
2337
2338 // [NAMESPACE]
2339
2340 CIMNamespaceName nameSpace;
2341
2342 if (!in.getNamespaceName(nameSpace))
2343 return 0;
2344
2345 // [QUALIFIER-NAME]
2346 CIMName qualifierName;
2347
2348 if (!in.getName(qualifierName))
2349 return 0;
2350
2351 AutoPtr<CIMGetQualifierRequestMessage> request(
2352 new CIMGetQualifierRequestMessage(
2353 messageId,
2354 nameSpace,
2355 mike 1.1 qualifierName,
2356 QueueIdStack(queueId, returnQueueId)));
2357
2358 request->binaryRequest = true;
2359
2360 STAT_SERVERSTART
2361
2362 return request.release();
2363 }
2364
2365 static void _encodeGetQualifierResponseBody(
2366 CIMBuffer& out,
2367 CIMGetQualifierResponseMessage* msg,
2368 CIMName& name)
2369 {
2370 /* See ../Server/CIMOperationResponseEncoder.cpp */
2371
2372 static const CIMName NAME("GetQualifier");
2373 name = NAME;
2374
2375 out.putQualifierDecl(msg->cimQualifierDecl);
2376 mike 1.1 }
2377
2378 static CIMGetQualifierResponseMessage* _decodeGetQualifierResponse(
2379 CIMBuffer& in,
2380 const String& messageId)
2381 {
2382 /* See ../Client/CIMOperationResponseDecoder.cpp */
2383
2384 CIMQualifierDecl cimQualifierDecl;
2385
2386 if (!in.getQualifierDecl(cimQualifierDecl))
2387 return 0;
2388
2389 CIMGetQualifierResponseMessage* msg;
2390 CIMException cimException;
2391
2392 msg = new CIMGetQualifierResponseMessage(
2393 messageId,
2394 cimException,
2395 QueueIdStack(),
2396 cimQualifierDecl);
2397 mike 1.1
2398 msg->binaryRequest = true;
2399 return msg;
2400 }
2401
2402 //==============================================================================
2403 //
2404 // DeleteQualifier
2405 //
2406 //==============================================================================
2407
2408 static void _encodeDeleteQualifierRequest(
2409 CIMBuffer& buf,
2410 CIMDeleteQualifierRequestMessage* msg,
2411 CIMName& name)
2412 {
2413 /* See ../Client/CIMOperationRequestEncoder.cpp */
2414
2415 static const CIMName NAME("DeleteQualifier");
2416 name = NAME;
2417
2418 mike 1.1 // [HEADER]
2419 _putHeader(buf, 0, msg->messageId, OP_DeleteQualifier);
2420
2421 // [NAMESPACE]
2422 buf.putNamespaceName(msg->nameSpace);
2423
2424 // [QUALIFIER-NAME]
2425 buf.putName(msg->qualifierName);
2426 }
2427
2428 static CIMDeleteQualifierRequestMessage* _decodeDeleteQualifierRequest(
2429 CIMBuffer& in,
2430 Uint32 queueId,
2431 Uint32 returnQueueId,
2432 const String& messageId)
2433 {
2434 /* See ../Server/CIMOperationRequestDecoder.cpp */
2435
2436 STAT_GETSTARTTIME
2437
2438 // [NAMESPACE]
2439 mike 1.1
2440 CIMNamespaceName nameSpace;
2441
2442 if (!in.getNamespaceName(nameSpace))
2443 return 0;
2444
2445 // [QUALIFIER-NAME]
2446 CIMName qualifierName;
2447
2448 if (!in.getName(qualifierName))
2449 return 0;
2450
2451 AutoPtr<CIMDeleteQualifierRequestMessage> request(
2452 new CIMDeleteQualifierRequestMessage(
2453 messageId,
2454 nameSpace,
2455 qualifierName,
2456 QueueIdStack(queueId, returnQueueId)));
2457
2458 request->binaryRequest = true;
2459
2460 mike 1.1 STAT_SERVERSTART
2461
2462 return request.release();
2463 }
2464
2465 static void _encodeDeleteQualifierResponseBody(
2466 CIMName& name)
2467 {
2468 /* See ../Server/CIMOperationResponseEncoder.cpp */
2469
2470 static const CIMName NAME("DeleteQualifier");
2471 name = NAME;
2472 }
2473
2474 static CIMDeleteQualifierResponseMessage* _decodeDeleteQualifierResponse(
2475 const String& messageId)
2476 {
2477 /* See ../Client/CIMOperationResponseDecoder.cpp */
2478
2479 CIMDeleteQualifierResponseMessage* msg;
2480 CIMException cimException;
2481 mike 1.1
2482 msg = new CIMDeleteQualifierResponseMessage(
2483 messageId,
2484 cimException,
2485 QueueIdStack());
2486
2487 msg->binaryRequest = true;
2488 return msg;
2489 }
2490
2491 //==============================================================================
2492 //
2493 // EnumerateQualifiers
2494 //
2495 //==============================================================================
2496
2497 static void _encodeEnumerateQualifiersRequest(
2498 CIMBuffer& buf,
2499 CIMEnumerateQualifiersRequestMessage* msg,
2500 CIMName& name)
2501 {
2502 mike 1.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
2503
2504 static const CIMName NAME("EnumerateQualifiers");
2505 name = NAME;
2506
2507 // [HEADER]
2508 _putHeader(buf, 0, msg->messageId, OP_EnumerateQualifiers);
2509
2510 // [NAMESPACE]
2511 buf.putNamespaceName(msg->nameSpace);
2512 }
2513
2514 static CIMEnumerateQualifiersRequestMessage* _decodeEnumerateQualifiersRequest(
2515 CIMBuffer& in,
2516 Uint32 queueId,
2517 Uint32 returnQueueId,
2518 const String& messageId)
2519 {
2520 /* See ../Server/CIMOperationRequestDecoder.cpp */
2521
2522 STAT_GETSTARTTIME
2523 mike 1.1
2524 // [NAMESPACE]
2525
2526 CIMNamespaceName nameSpace;
2527
2528 if (!in.getNamespaceName(nameSpace))
2529 return 0;
2530
2531 AutoPtr<CIMEnumerateQualifiersRequestMessage> request(
2532 new CIMEnumerateQualifiersRequestMessage(
2533 messageId,
2534 nameSpace,
2535 QueueIdStack(queueId, returnQueueId)));
2536
2537 request->binaryRequest = true;
2538
2539 STAT_SERVERSTART
2540
2541 return request.release();
2542 }
2543
2544 mike 1.1 static void _encodeEnumerateQualifiersResponseBody(
2545 CIMBuffer& out,
2546 CIMEnumerateQualifiersResponseMessage* msg,
2547 CIMName& name)
2548 {
2549 /* See ../Server/CIMOperationResponseEncoder.cpp */
2550
2551 static const CIMName NAME("EnumerateQualifiers");
2552 name = NAME;
2553
2554 out.putQualifierDeclA(msg->qualifierDeclarations);
2555 }
2556
|
2557 kumpf 1.6 static CIMEnumerateQualifiersResponseMessage*
|
2558 mike 1.1 _decodeEnumerateQualifiersResponse(
2559 CIMBuffer& in,
2560 const String& messageId)
2561 {
2562 /* See ../Client/CIMOperationResponseDecoder.cpp */
2563
2564 Array<CIMQualifierDecl> qualifierDecls;
2565
2566 while (in.more())
2567 {
2568 Array<CIMQualifierDecl> tmp;
2569
2570 if (!in.getQualifierDeclA(tmp))
2571 return 0;
2572
2573 qualifierDecls.append(tmp.getData(), tmp.size());
2574 }
2575
2576 CIMEnumerateQualifiersResponseMessage* msg;
2577 CIMException cimException;
2578
2579 mike 1.1 msg = new CIMEnumerateQualifiersResponseMessage(
2580 messageId,
2581 cimException,
2582 QueueIdStack(),
2583 qualifierDecls);
2584
2585 msg->binaryRequest = true;
2586 return msg;
2587 }
2588
2589 //==============================================================================
2590 //
2591 // GetProperty
2592 //
2593 //==============================================================================
2594
2595 static void _encodeGetPropertyRequest(
2596 CIMBuffer& buf,
2597 CIMGetPropertyRequestMessage* msg,
2598 CIMName& name)
2599 {
2600 mike 1.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
2601
2602 static const CIMName NAME("GetProperty");
2603 name = NAME;
2604
2605 // [HEADER]
2606 _putHeader(buf, 0, msg->messageId, OP_GetProperty);
2607
2608 // [NAMESPACE]
2609 buf.putNamespaceName(msg->nameSpace);
2610
2611 // [INSTANCE-NAME]
2612 buf.putObjectPath(msg->instanceName);
2613
2614 // [PROPERTY-NAME]
2615 buf.putName(msg->propertyName);
2616 }
2617
2618 static CIMGetPropertyRequestMessage* _decodeGetPropertyRequest(
2619 CIMBuffer& in,
2620 Uint32 queueId,
2621 mike 1.1 Uint32 returnQueueId,
2622 const String& messageId)
2623 {
2624 /* See ../Server/CIMOperationRequestDecoder.cpp */
2625
2626 STAT_GETSTARTTIME
2627
2628 // [NAMESPACE]
2629
2630 CIMNamespaceName nameSpace;
2631
2632 if (!in.getNamespaceName(nameSpace))
2633 return 0;
2634
2635 // [INSTANCE-NAME]
2636 CIMObjectPath instanceName;
2637
2638 if (!in.getObjectPath(instanceName))
2639 return 0;
2640
2641 // [PROPERTY-NAME]
2642 mike 1.1 CIMName propertyName;
2643
2644 if (!in.getName(propertyName))
2645 return 0;
2646
2647 AutoPtr<CIMGetPropertyRequestMessage> request(
2648 new CIMGetPropertyRequestMessage(
2649 messageId,
2650 nameSpace,
2651 instanceName,
2652 propertyName,
2653 QueueIdStack(queueId, returnQueueId)));
2654
2655 request->binaryRequest = true;
2656
2657 STAT_SERVERSTART
2658
2659 return request.release();
2660 }
2661
2662 static void _encodeGetPropertyResponseBody(
2663 mike 1.1 CIMBuffer& out,
2664 CIMGetPropertyResponseMessage* msg,
2665 CIMName& name)
2666 {
2667 /* See ../Server/CIMOperationResponseEncoder.cpp */
2668
2669 static const CIMName NAME("GetProperty");
2670 name = NAME;
2671
2672 // [VALUE]
2673 out.putValue(msg->value);
2674 }
2675
2676 static CIMGetPropertyResponseMessage* _decodeGetPropertyResponse(
2677 CIMBuffer& in,
2678 const String& messageId)
2679 {
2680 /* See ../Client/CIMOperationResponseDecoder.cpp */
2681
2682 // [VALUE]
2683 CIMValue value;
2684 mike 1.1
2685 if (!in.getValue(value))
2686 return 0;
2687
2688 // Unfortunately the CIM GetProperty() method is only able to return
2689 // a string since there is no containing element that specifies its
2690 // type. So even though the binary protocol properly transmits the type,
2691 // we are force to convert that type to string to match the XML protocol
2692 // behavior.
2693
2694 if (value.isNull())
2695 value.setNullValue(CIMTYPE_STRING, false);
2696 else
2697 value.set(value.toString());
2698
2699 CIMGetPropertyResponseMessage* msg;
2700 CIMException cimException;
2701
2702 msg = new CIMGetPropertyResponseMessage(
2703 messageId,
2704 cimException,
2705 mike 1.1 QueueIdStack(),
2706 value);
2707
2708 msg->binaryRequest = true;
2709 return msg;
2710 }
2711
2712 //==============================================================================
2713 //
2714 // SetProperty
2715 //
2716 //==============================================================================
2717
2718 static void _encodeSetPropertyRequest(
2719 CIMBuffer& buf,
2720 CIMSetPropertyRequestMessage* msg,
2721 CIMName& name)
2722 {
2723 /* See ../Client/CIMOperationRequestEncoder.cpp */
2724
2725 static const CIMName NAME("SetProperty");
2726 mike 1.1 name = NAME;
2727
2728 // [HEADER]
2729 _putHeader(buf, 0, msg->messageId, OP_SetProperty);
2730
2731 // [NAMESPACE]
2732 buf.putNamespaceName(msg->nameSpace);
2733
2734 // [INSTANCE-NAME]
2735 buf.putObjectPath(msg->instanceName);
2736
2737 // [PROPERTY-NAME]
2738 buf.putName(msg->propertyName);
2739
2740 // [VALUE]
2741 buf.putValue(msg->newValue);
2742 }
2743
2744 static CIMSetPropertyRequestMessage* _decodeSetPropertyRequest(
2745 CIMBuffer& in,
2746 Uint32 queueId,
2747 mike 1.1 Uint32 returnQueueId,
2748 const String& messageId)
2749 {
2750 /* See ../Server/CIMOperationRequestDecoder.cpp */
2751
2752 STAT_GETSTARTTIME
2753
2754 // [NAMESPACE]
2755
2756 CIMNamespaceName nameSpace;
2757
2758 if (!in.getNamespaceName(nameSpace))
2759 return 0;
2760
2761 // [INSTANCE-NAME]
2762
2763 CIMObjectPath instanceName;
2764
2765 if (!in.getObjectPath(instanceName))
2766 return 0;
2767
2768 mike 1.1 // [PROPERTY-NAME]
2769
2770 CIMName propertyName;
2771
2772 if (!in.getName(propertyName))
2773 return 0;
2774
2775 // [PROPERTY-VALUE]
2776
2777 CIMValue propertyValue;
2778
2779 if (!in.getValue(propertyValue))
2780 return 0;
2781
2782 AutoPtr<CIMSetPropertyRequestMessage> request(
2783 new CIMSetPropertyRequestMessage(
2784 messageId,
2785 nameSpace,
2786 instanceName,
2787 propertyName,
2788 propertyValue,
2789 mike 1.1 QueueIdStack(queueId, returnQueueId)));
2790
2791 request->binaryRequest = true;
2792
2793 STAT_SERVERSTART
2794
2795 return request.release();
2796 }
2797
2798 static void _encodeSetPropertyResponseBody(
2799 CIMName& name)
2800 {
2801 /* See ../Server/CIMOperationResponseEncoder.cpp */
2802
2803 static const CIMName NAME("SetProperty");
2804 name = NAME;
2805 }
2806
2807 static CIMSetPropertyResponseMessage* _decodeSetPropertyResponse(
2808 const String& messageId)
2809 {
2810 mike 1.1 /* See ../Client/CIMOperationResponseDecoder.cpp */
2811
2812 CIMSetPropertyResponseMessage* msg;
2813 CIMException cimException;
2814
2815 msg = new CIMSetPropertyResponseMessage(
2816 messageId,
2817 cimException,
2818 QueueIdStack());
2819
2820 msg->binaryRequest = true;
2821 return msg;
2822 }
2823
2824 //==============================================================================
2825 //
2826 // InvokeMethod
2827 //
2828 //==============================================================================
2829
2830 static void _encodeInvokeMethodRequest(
2831 mike 1.1 CIMBuffer& buf,
2832 CIMInvokeMethodRequestMessage* msg,
2833 CIMName& name)
2834 {
2835 /* See ../Client/CIMOperationRequestEncoder.cpp */
2836
2837 name = msg->methodName;
2838
2839 // [HEADER]
2840 _putHeader(buf, 0, msg->messageId, OP_InvokeMethod);
2841
2842 // [NAMESPACE]
2843 buf.putNamespaceName(msg->nameSpace);
2844
2845 // [INSTANCE-NAME]
2846 buf.putObjectPath(msg->instanceName);
2847
2848 // [METHOD-NAME]
2849 buf.putName(msg->methodName);
2850
2851 // [IN-PARAMETERS]
2852 mike 1.1 buf.putParamValueA(msg->inParameters);
2853 }
2854
2855 static CIMInvokeMethodRequestMessage* _decodeInvokeMethodRequest(
2856 CIMBuffer& in,
2857 Uint32 queueId,
2858 Uint32 returnQueueId,
2859 const String& messageId)
2860 {
2861 /* See ../Server/CIMOperationRequestDecoder.cpp */
2862
2863 STAT_GETSTARTTIME
2864
2865 // [NAMESPACE]
2866
2867 CIMNamespaceName nameSpace;
2868
2869 if (!in.getNamespaceName(nameSpace))
2870 return 0;
2871
2872 // [INSTANCE-NAME]
2873 mike 1.1
2874 CIMObjectPath instanceName;
2875
2876 if (!in.getObjectPath(instanceName))
2877 return 0;
2878
2879 // [METHOD-NAME]
2880
2881 CIMName methodName;
2882
2883 if (!in.getName(methodName))
2884 return 0;
2885
2886 // [IN-PARAMETERS]
2887
2888 Array<CIMParamValue> inParameters;
2889
2890 if (!in.getParamValueA(inParameters))
2891 return 0;
2892
2893 AutoPtr<CIMInvokeMethodRequestMessage> request(
2894 mike 1.1 new CIMInvokeMethodRequestMessage(
2895 messageId,
2896 nameSpace,
2897 instanceName,
2898 methodName,
2899 inParameters,
2900 QueueIdStack(queueId, returnQueueId)));
2901
2902 request->binaryRequest = true;
2903
2904 STAT_SERVERSTART
2905
2906 return request.release();
2907 }
2908
2909 static void _encodeInvokeMethodResponseBody(
2910 CIMBuffer& out,
2911 CIMInvokeMethodResponseMessage* msg,
2912 CIMName& name)
2913 {
2914 /* See ../Server/CIMOperationResponseEncoder.cpp */
2915 mike 1.1
2916 name = msg->methodName;
2917
2918 // [METHOD-NAME]
2919 out.putName(msg->methodName);
2920
2921 // [RETURN-VALUE]
2922 out.putValue(msg->retValue);
2923
2924 // [OUT-PARAMETERS]
2925 out.putParamValueA(msg->outParameters);
2926 }
2927
2928 static CIMInvokeMethodResponseMessage* _decodeInvokeMethodResponse(
2929 CIMBuffer& in,
2930 const String& messageId)
2931 {
2932 /* See ../Client/CIMOperationResponseDecoder.cpp */
2933
2934 // [METHOD-NAME]
2935
2936 mike 1.1 CIMName methodName;
2937
2938 if (!in.getName(methodName))
2939 return 0;
2940
2941 // [RETURN-VALUE]
2942
2943 CIMValue returnValue;
2944
2945 if (!in.getValue(returnValue))
2946 return 0;
2947
2948 // [OUT-PARAMETERS]
2949
2950 Array<CIMParamValue> outParameters;
2951
2952 if (!in.getParamValueA(outParameters))
2953 return 0;
2954
2955 CIMInvokeMethodResponseMessage* msg;
2956 CIMException cimException;
2957 mike 1.1
2958 msg = new CIMInvokeMethodResponseMessage(
2959 messageId,
2960 cimException,
2961 QueueIdStack(),
2962 returnValue,
2963 outParameters,
2964 methodName);
2965
2966 msg->binaryRequest = true;
2967
2968 return msg;
2969 }
2970
2971 //==============================================================================
2972 //
2973 // ExecQuery
2974 //
2975 //==============================================================================
2976
2977 static void _encodeExecQueryRequest(
2978 mike 1.1 CIMBuffer& buf,
2979 CIMExecQueryRequestMessage* msg,
2980 CIMName& name)
2981 {
2982 /* See ../Client/CIMOperationRequestEncoder.cpp */
2983
2984 static const CIMName NAME("ExecQuery");
2985 name = NAME;
2986
2987 // [HEADER]
2988 _putHeader(buf, 0, msg->messageId, OP_ExecQuery);
2989
2990 // [NAMESPACE]
2991 buf.putNamespaceName(msg->nameSpace);
2992
2993 // [QUERY-LANGUAGE]
2994 buf.putString(msg->queryLanguage);
2995
2996 // [QUERY]
2997 buf.putString(msg->query);
2998 }
2999 mike 1.1
3000 static CIMExecQueryRequestMessage* _decodeExecQueryRequest(
3001 CIMBuffer& in,
3002 Uint32 queueId,
3003 Uint32 returnQueueId,
3004 const String& messageId)
3005 {
3006 /* See ../Server/CIMOperationRequestDecoder.cpp */
3007
3008 STAT_GETSTARTTIME
3009
3010 // [NAMESPACE]
3011
3012 CIMNamespaceName nameSpace;
3013
3014 if (!in.getNamespaceName(nameSpace))
3015 return 0;
3016
3017 // [QUERY-LANGUAGE]]
3018 String queryLanguage;
3019
3020 mike 1.1 if (!in.getString(queryLanguage))
3021 return 0;
3022
3023 // [QUERY]]
3024 String query;
3025
3026 if (!in.getString(query))
3027 return 0;
3028
3029 AutoPtr<CIMExecQueryRequestMessage> request(
3030 new CIMExecQueryRequestMessage(
3031 messageId,
3032 nameSpace,
3033 queryLanguage,
3034 query,
3035 QueueIdStack(queueId, returnQueueId)));
3036
3037 request->binaryRequest = true;
3038
3039 STAT_SERVERSTART
3040
3041 mike 1.1 return request.release();
3042 }
3043
3044 static void _encodeExecQueryResponseBody(
3045 CIMBuffer& out,
|
3046 thilo.boehm 1.10 CIMResponseData& data,
|
3047 mike 1.1 CIMName& name)
3048 {
3049 /* See ../Server/CIMOperationResponseEncoder.cpp */
3050
3051 static const CIMName NAME("ExecQuery");
3052 name = NAME;
3053
|
3054 r.kieninger 1.8 data.encodeBinaryResponse(out);
|
3055 mike 1.1 }
3056
3057 static CIMExecQueryResponseMessage* _decodeExecQueryResponse(
3058 CIMBuffer& in,
3059 const String& messageId)
3060 {
3061 CIMExecQueryResponseMessage* msg;
3062 CIMException cimException;
3063
3064 msg = new CIMExecQueryResponseMessage(
3065 messageId,
3066 cimException,
|
3067 r.kieninger 1.8 QueueIdStack());
|
3068 mike 1.1
|
3069 r.kieninger 1.9 // Instead of resolving the binary data right here, we delegate this
3070 // to a later point in time when the data is actually retrieved through
3071 // a call to getNamedInstances, which is going to resolve the binary
3072 // data when the callback function is registered.
3073 // This allows an alternate client implementation to gain direct access
3074 // to the binary data and pass this for example to the JNI implementation
3075 // of the JSR48 CIM Client for Java.
|
3076 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
3077 karl 1.12 responseData.setRemainingBinaryData(in);
|
3078 r.kieninger 1.9
|
3079 mike 1.1 msg->binaryRequest = true;
3080 return msg;
3081 }
|
3082 karl 1.12.2.4 // EXP_PULL_BEGIN
|
3083 mike 1.1 //==============================================================================
3084 //
|
3085 karl 1.12.2.1 // OpenEnumerateInstances
|
3086 mike 1.1 //
3087 //==============================================================================
3088
|
3089 karl 1.12.2.1 static void _encodeOpenEnumerateInstancesRequest(
3090 CIMBuffer& buf,
3091 CIMOpenEnumerateInstancesRequestMessage* msg,
3092 CIMName& name)
|
3093 mike 1.1 {
|
3094 karl 1.12.2.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
|
3095 mike 1.1
|
3096 karl 1.12.2.1 static const CIMName NAME("OpenEnumerateInstances");
3097 name = NAME;
|
3098 mike 1.1
|
3099 karl 1.12.2.1 // [HEADER]
|
3100 mike 1.1
|
3101 karl 1.12.2.1 Uint32 flags = 0;
|
3102 mike 1.1
|
3103 karl 1.12.2.1 if (msg->deepInheritance)
3104 flags |= DEEP_INHERITANCE;
|
3105 mike 1.1
|
3106 karl 1.12.2.1 if (msg->includeClassOrigin)
3107 flags |= INCLUDE_CLASS_ORIGIN;
|
3108 mike 1.1
|
3109 karl 1.12.2.1 if (msg->continueOnError)
3110 flags |= CONTINUE_ON_ERROR;
|
3111 mike 1.1
|
3112 karl 1.12.2.1 _putHeader(buf, flags, msg->messageId, OP_OpenEnumerateInstances);
|
3113 mike 1.1
|
3114 karl 1.12.2.1 // [NAMESPACE]
3115 buf.putNamespaceName(msg->nameSpace);
|
3116 mike 1.1
|
3117 karl 1.12.2.1 // [CLASSNAME]
3118 buf.putName(msg->className);
|
3119 mike 1.1
|
3120 karl 1.12.2.1 // [PROPERTY-LIST]
3121 buf.putPropertyList(msg->propertyList);
|
3122 mike 1.1
|
3123 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
3124 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
3125 buf.putString(msg->filterQueryLanguage);
3126 buf.putString(msg->filterQuery);
3127 }
|
3128 mike 1.1
|
3129 karl 1.12.2.1 static CIMOpenEnumerateInstancesRequestMessage*
3130 _decodeOpenEnumerateInstancesRequest(
3131 CIMBuffer& in,
|
3132 mike 1.1 Uint32 queueId,
|
3133 karl 1.12.2.1 Uint32 returnQueueId,
3134 Uint32 flags,
3135 const String& messageId)
|
3136 mike 1.1 {
|
3137 karl 1.12.2.1 /* See ../Server/CIMOperationRequestDecoder.cpp */
|
3138 mike 1.1
|
3139 karl 1.12.2.1 STAT_GETSTARTTIME
|
3140 mike 1.1
|
3141 karl 1.12.2.1 Boolean deepInheritance = flags & DEEP_INHERITANCE;
3142 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
3143 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
|
3144 mike 1.1
|
3145 karl 1.12.2.1 // [NAMESPACE]
3146 CIMNamespaceName nameSpace;
3147 if (!in.getNamespaceName(nameSpace))
|
3148 mike 1.1 return 0;
3149
|
3150 karl 1.12.2.1 // [CLASSNAME]
3151 CIMName className;
3152 if (!in.getName(className))
3153 return 0;
|
3154 mike 1.1
|
3155 karl 1.12.2.1 // [PROPERTY-LIST]
3156 CIMPropertyList propertyList;
3157 if (!in.getPropertyList(propertyList))
3158 return 0;
|
3159 mike 1.1
|
3160 karl 1.12.2.1 // These can all be one common function.
|
3161 karl 1.12.2.5 Uint32 maxObjectCount;
3162 if (!in.getUint32(maxObjectCount))
|
3163 karl 1.12.2.1 return 0;
3164 Uint32Arg operationTimeout;
3165 if (!in.getUint32Arg(operationTimeout))
3166 return 0;
3167 String filterQueryLanguage;
3168 if (!in.getString(filterQueryLanguage))
3169 return 0;
3170 String filterQuery;
3171 if (!in.getString(filterQuery))
3172 return 0;
3173
3174 AutoPtr<CIMOpenEnumerateInstancesRequestMessage> request(
3175 new CIMOpenEnumerateInstancesRequestMessage(
3176 messageId,
3177 nameSpace,
3178 className,
3179 deepInheritance,
3180 includeClassOrigin,
3181 propertyList,
3182 filterQueryLanguage,
3183 filterQuery,
3184 karl 1.12.2.1 operationTimeout,
3185 continueOnError,
3186 maxObjectCount,
3187 QueueIdStack(queueId, returnQueueId)));
3188
3189 request->binaryRequest = true;
3190
3191 STAT_SERVERSTART
3192
3193 return request.release();
3194 }
|
3195 karl 1.12.2.4
|
3196 karl 1.12.2.1 // For the pull Response messages the interface is the message and the,
3197 // not just the responseData.
3198 static void _encodeOpenEnumerateInstancesResponseBody(
3199 CIMBuffer& out,
3200 CIMOpenEnumerateInstancesResponseMessage* msg,
3201 CIMResponseData& data,
3202 CIMName& name)
|
3203 mike 1.1 {
|
3204 karl 1.12.2.1 /* See ../Server/CIMOperationResponseEncoder.cpp */
|
3205 mike 1.1
|
3206 karl 1.12.2.1 static const CIMName NAME("OpenEnumerateInstances");
3207 name = NAME;
3208
3209 // [endOfSequence]
3210 out.putBoolean(msg->endOfSequence);
3211
3212 // [enumerationContext]
3213 out.putString(msg->enumerationContext);
3214
3215 data.encodeBinaryResponse(out);
|
3216 r.kieninger 1.9 }
3217
|
3218 karl 1.12.2.1 static CIMOpenEnumerateInstancesResponseMessage*
3219 _decodeOpenEnumerateInstancesResponse(
3220 CIMBuffer& in,
3221 const String& messageId)
|
3222 r.kieninger 1.9 {
|
3223 karl 1.12.2.1 CIMException cimException;
3224
3225 // KS_TODO Should we set validation???
|
3226 karl 1.12 // Turn on validation: This is a debugging tool
|
3227 karl 1.12.2.1 //#if defined(ENABLE_VALIDATION)
3228 // buf.setValidate(true);
3229 //#endif
|
3230 mike 1.1
|
3231 karl 1.12.2.1 Boolean endOfSequence;
3232 if (!in.getBoolean(endOfSequence))
3233 return 0;
|
3234 mike 1.1
|
3235 karl 1.12.2.1 String enumerationContext;
3236 if (!in.getString(enumerationContext))
|
3237 mike 1.1 return 0;
3238
|
3239 karl 1.12.2.1 CIMOpenEnumerateInstancesResponseMessage* msg =
3240 new CIMOpenEnumerateInstancesResponseMessage(
3241 messageId,
3242 cimException,
3243 endOfSequence,
3244 enumerationContext,
3245 QueueIdStack());
|
3246 mike 1.1
|
3247 karl 1.12.2.1 // Instead of resolving the binary data here, we delegate this
3248 // to a later point in time when the data is actually retrieved through
3249 // a call to CIMResponseData::getInstances, which
3250 // resolves the binary data as it is passed to the next interface.
3251 // This allows an alternate client implementation to gain direct access
3252 // to the binary data and pass this for example to the JNI implementation
3253 // of the JSR48 CIM Client for Java.
3254 CIMResponseData& responseData = msg->getResponseData();
3255 responseData.setRemainingBinaryData(in);
3256
3257 msg->binaryRequest=true;
3258 return msg;
3259 }
|
3260 karl 1.12.2.4
|
3261 karl 1.12.2.1 //==============================================================================
3262 //
3263 // OpenEnumerateInstancesPaths
3264 //
3265 //==============================================================================
3266
3267 static void _encodeOpenEnumerateInstancePathsRequest(
3268 CIMBuffer& buf,
3269 CIMOpenEnumerateInstancePathsRequestMessage* msg,
3270 CIMName& name)
3271 {
3272 /* See ../Client/CIMOperationRequestEncoder.cpp */
3273
3274 static const CIMName NAME("OpenEnumerateInstancePaths");
3275 name = NAME;
3276
3277 // [HEADER]
3278
3279 Uint32 flags = 0;
3280
3281 if (msg->continueOnError)
3282 karl 1.12.2.1 flags |= CONTINUE_ON_ERROR;
3283
3284 _putHeader(buf, flags, msg->messageId, OP_OpenEnumerateInstancePaths);
3285
3286 // [NAMESPACE]
3287 buf.putNamespaceName(msg->nameSpace);
3288
3289 // [CLASSNAME]
3290 buf.putName(msg->className);
3291
|
3292 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
3293 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
3294 buf.putString(msg->filterQueryLanguage);
3295 buf.putString(msg->filterQuery);
3296 }
3297
3298 static CIMOpenEnumerateInstancePathsRequestMessage*
3299 _decodeOpenEnumerateInstancePathsRequest(
3300 CIMBuffer& in,
3301 Uint32 queueId,
3302 Uint32 returnQueueId,
3303 Uint32 flags,
3304 const String& messageId)
3305 {
3306 /* See ../Server/CIMOperationRequestDecoder.cpp */
3307
3308 STAT_GETSTARTTIME
3309
3310 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
3311
3312 // [NAMESPACE]
3313
3314 karl 1.12.2.1 CIMNamespaceName nameSpace;
3315 if (!in.getNamespaceName(nameSpace))
3316 return 0;
3317
3318 // [CLASSNAME]
3319 CIMName className;
3320 if (!in.getName(className))
3321 return 0;
3322
3323 // These can all be one common function.
3324
|
3325 karl 1.12.2.5 Uint32 maxObjectCount;
3326 if (!in.getUint32(maxObjectCount))
|
3327 karl 1.12.2.1 return 0;
3328 Uint32Arg operationTimeout;
3329 if (!in.getUint32Arg(operationTimeout))
3330 return 0;
3331 String filterQueryLanguage;
3332 if (!in.getString(filterQueryLanguage))
3333 return 0;
3334 String filterQuery;
3335 if (!in.getString(filterQuery))
3336 return 0;
3337
3338 AutoPtr<CIMOpenEnumerateInstancePathsRequestMessage> request(
3339 new CIMOpenEnumerateInstancePathsRequestMessage(
3340 messageId,
3341 nameSpace,
3342 className,
3343 filterQueryLanguage,
3344 filterQuery,
3345 operationTimeout,
3346 continueOnError,
3347 maxObjectCount,
3348 karl 1.12.2.1 QueueIdStack(queueId, returnQueueId)));
3349
3350 request->binaryRequest = true;
3351
3352 STAT_SERVERSTART
3353
3354 return request.release();
3355 }
3356
3357 // For the pull Response messages the interface is the message and the,
3358 // not just the responseData.
3359 static void _encodeOpenEnumerateInstancePathsResponseBody(
3360 CIMBuffer& out,
3361 CIMOpenEnumerateInstancePathsResponseMessage* msg,
3362 CIMResponseData& data,
3363 CIMName& name)
3364 {
3365 /* See ../Server/CIMOperationResponseEncoder.cpp */
3366
3367 static const CIMName NAME("OpenEnumerateInstancePaths");
3368 name = NAME;
3369 karl 1.12.2.1
3370 // [endOfSequence]
3371 out.putBoolean(msg->endOfSequence);
3372
3373 // [enumerationContext]
3374 out.putString(msg->enumerationContext);
3375
3376 data.encodeBinaryResponse(out);
3377 }
3378
3379 static CIMOpenEnumerateInstancePathsResponseMessage*
3380 _decodeOpenEnumerateInstancePathsResponse(
3381 CIMBuffer& in,
3382 const String& messageId)
3383 {
3384 CIMException cimException;
3385
3386 Boolean endOfSequence;
3387 if (!in.getBoolean(endOfSequence))
3388 return 0;
3389
3390 karl 1.12.2.1 String enumerationContext;
3391 if (!in.getString(enumerationContext))
3392 {
3393 return 0;
3394 }
3395 CIMOpenEnumerateInstancePathsResponseMessage* msg =
3396 new CIMOpenEnumerateInstancePathsResponseMessage(
3397 messageId,
3398 cimException,
3399 endOfSequence,
3400 enumerationContext,
3401 QueueIdStack());
3402
3403 // Instead of resolving the binary data here, we delegate this
3404 // to a later point in time when the data is actually retrieved through
3405 // a call to CIMResponseData::getInstanceNames, which
3406 // resolves the binary data as it is passed to the next interface.
3407 // This allows an alternate client implementation to gain direct access
3408 // to the binary data and pass this for example to the JNI implementation
3409 // of the JSR48 CIM Client for Java.
3410 CIMResponseData& responseData = msg->getResponseData();
3411 karl 1.12.2.1 responseData.setRemainingBinaryData(in);
3412
3413 msg->binaryRequest=true;
3414 return msg;
3415 }
3416 //==============================================================================
3417 //
3418 // OpenReferenceInstances
3419 //
3420 //==============================================================================
3421
3422 static void _encodeOpenReferenceInstancesRequest(
3423 CIMBuffer& buf,
3424 CIMOpenReferenceInstancesRequestMessage* msg,
3425 CIMName& name)
3426 {
3427 /* See ../Client/CIMOperationRequestEncoder.cpp */
3428
3429 static const CIMName NAME("OpenReferenceInstances");
3430 name = NAME;
3431
3432 karl 1.12.2.1 // [HEADER]
3433
3434 Uint32 flags = 0;
3435
3436 if (msg->includeClassOrigin)
3437 flags |= INCLUDE_CLASS_ORIGIN;
3438
3439 if (msg->continueOnError)
3440 flags |= CONTINUE_ON_ERROR;
3441
3442 _putHeader(buf, flags, msg->messageId, OP_OpenReferenceInstances);
3443
3444 // [NAMESPACE]
3445 buf.putNamespaceName(msg->nameSpace);
3446
3447 // [OBJECT-NAME]
3448 buf.putObjectPath(msg->objectName);
3449
3450 // [RESULT-CLASS]
3451 buf.putName(msg->resultClass);
3452
3453 karl 1.12.2.1 // [ROLE]
3454 buf.putString(msg->role);
3455
3456 // [PROPERTY-LIST]
3457 buf.putPropertyList(msg->propertyList);
3458
|
3459 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
3460 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
3461 buf.putString(msg->filterQueryLanguage);
3462 buf.putString(msg->filterQuery);
3463 }
3464
3465 static CIMOpenReferenceInstancesRequestMessage*
3466 _decodeOpenReferenceInstancesRequest(
3467 CIMBuffer& in,
3468 Uint32 queueId,
3469 Uint32 returnQueueId,
3470 Uint32 flags,
3471 const String& messageId)
3472 {
3473 /* See ../Server/CIMOperationRequestDecoder.cpp */
3474
3475 STAT_GETSTARTTIME
3476
3477 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
3478 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
3479
3480 // [NAMESPACE]
3481 karl 1.12.2.1
3482 CIMNamespaceName nameSpace;
3483 if (!in.getNamespaceName(nameSpace))
3484 return 0;
3485
3486 // [OBJECT-NAME]
3487
3488 CIMObjectPath objectName;
3489
3490 if (!in.getObjectPath(objectName))
3491 return 0;
3492
3493 // [RESULT-CLASS]
3494
3495 CIMName resultClass;
3496
3497 if (!in.getName(resultClass))
3498 return 0;
3499
3500 // [ROLE]
3501
3502 karl 1.12.2.1 String role;
3503
3504 if (!in.getString(role))
3505 return 0;
3506
3507 // [PROPERTY-LIST]
3508 CIMPropertyList propertyList;
3509 if (!in.getPropertyList(propertyList))
3510 return 0;
3511
3512 // These can all be one common function.
|
3513 karl 1.12.2.5 Uint32 maxObjectCount;
3514 if (!in.getUint32(maxObjectCount))
|
3515 karl 1.12.2.1 return 0;
3516 Uint32Arg operationTimeout;
3517 if (!in.getUint32Arg(operationTimeout))
3518 return 0;
3519 String filterQueryLanguage;
3520 if (!in.getString(filterQueryLanguage))
3521 return 0;
3522 String filterQuery;
3523 if (!in.getString(filterQuery))
3524 return 0;
3525
3526 AutoPtr<CIMOpenReferenceInstancesRequestMessage> request(
3527 new CIMOpenReferenceInstancesRequestMessage(
3528 messageId,
3529 nameSpace,
3530 objectName,
3531 resultClass,
3532 role,
3533 includeClassOrigin,
3534 propertyList,
3535 filterQueryLanguage,
3536 karl 1.12.2.1 filterQuery,
3537 operationTimeout,
3538 continueOnError,
3539 maxObjectCount,
3540 QueueIdStack(queueId, returnQueueId)));
3541
3542 request->binaryRequest = true;
3543
3544 STAT_SERVERSTART
3545
3546 return request.release();
3547 }
3548 // For the pull Response messages the interface is the message and the,
3549 // not just the responseData.
3550 static void _encodeOpenReferenceInstancesResponseBody(
3551 CIMBuffer& out,
3552 CIMOpenReferenceInstancesResponseMessage* msg,
3553 CIMResponseData& data,
3554 CIMName& name)
3555 {
3556 /* See ../Server/CIMOperationResponseEncoder.cpp */
3557 karl 1.12.2.1
3558 static const CIMName NAME("OpenReferenceInstances");
3559 name = NAME;
3560
3561 // [endOfSequence]
3562 out.putBoolean(msg->endOfSequence);
3563
3564 // [enumerationContext]
3565 out.putString(msg->enumerationContext);
3566
3567 data.encodeBinaryResponse(out);
3568 }
3569
3570 static CIMOpenReferenceInstancesResponseMessage*
3571 _decodeOpenReferenceInstancesResponse(
3572 CIMBuffer& in,
3573 const String& messageId)
3574 {
3575 CIMException cimException;
3576
3577 Boolean endOfSequence;
3578 karl 1.12.2.1 if (!in.getBoolean(endOfSequence))
3579 return 0;
3580
3581 String enumerationContext;
3582 if (!in.getString(enumerationContext))
3583 return 0;
3584
3585 CIMOpenReferenceInstancesResponseMessage* msg =
|
3586 karl 1.12.2.3 new CIMOpenReferenceInstancesResponseMessage(
|
3587 karl 1.12.2.1 messageId,
3588 cimException,
3589 endOfSequence,
3590 enumerationContext,
3591 QueueIdStack());
3592
3593 // Instead of resolving the binary data here, we delegate this
3594 // to a later point in time when the data is actually retrieved through
3595 // a call to CIMResponseData::getInstances, which
3596 // resolves the binary data is passed to the next interface.
3597 // This allows an alternate client implementation to gain direct access
3598 // to the binary data and pass this for example to the JNI implementation
3599 // of the JSR48 CIM Client for Java.
3600 CIMResponseData& responseData = msg->getResponseData();
3601 responseData.setRemainingBinaryData(in);
3602
3603 msg->binaryRequest=true;
3604 return msg;
3605 }
3606 //==============================================================================
3607 //
3608 karl 1.12.2.1 // OpenReferenceInstancePaths
3609 //
3610 //==============================================================================
3611
3612 static void _encodeOpenReferenceInstancePathsRequest(
3613 CIMBuffer& buf,
3614 CIMOpenReferenceInstancePathsRequestMessage* msg,
3615 CIMName& name)
3616 {
3617 /* See ../Client/CIMOperationRequestEncoder.cpp */
3618
3619 static const CIMName NAME("OpenReferenceInstancePaths");
3620 name = NAME;
3621
3622 // [HEADER]
3623
3624 Uint32 flags = 0;
3625 if (msg->continueOnError)
3626 flags |= CONTINUE_ON_ERROR;
3627
3628 _putHeader(buf, flags, msg->messageId, OP_OpenReferenceInstancePaths);
3629 karl 1.12.2.1
3630 // [NAMESPACE]
3631 buf.putNamespaceName(msg->nameSpace);
3632
3633 // [OBJECT-NAME]
3634 buf.putObjectPath(msg->objectName);
3635
3636 // [RESULT-CLASS]
3637 buf.putName(msg->resultClass);
3638
3639 // [ROLE]
3640 buf.putString(msg->role);
3641
|
3642 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
3643 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
3644 buf.putString(msg->filterQueryLanguage);
3645 buf.putString(msg->filterQuery);
3646 }
3647
3648 static CIMOpenReferenceInstancePathsRequestMessage*
3649 _decodeOpenReferenceInstancePathsRequest(
3650 CIMBuffer& in,
3651 Uint32 queueId,
3652 Uint32 returnQueueId,
3653 Uint32 flags,
3654 const String& messageId)
3655 {
|
3656 karl 1.12.2.4 /* See ../
3657 Server/CIMOperationRequestDecoder.cpp */
|
3658 karl 1.12.2.1
3659 STAT_GETSTARTTIME
3660
3661 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
3662
3663 // [NAMESPACE]
3664
3665 CIMNamespaceName nameSpace;
3666 if (!in.getNamespaceName(nameSpace))
3667 return 0;
3668
3669 // [OBJECT-NAME]
3670
3671 CIMObjectPath objectName;
3672 if (!in.getObjectPath(objectName))
3673 return 0;
3674
3675 // [RESULT-CLASS]
3676
3677 CIMName resultClass;
3678 if (!in.getName(resultClass))
3679 karl 1.12.2.1 return 0;
3680
3681 // [ROLE]
3682
3683 String role;
3684 if (!in.getString(role))
3685 return 0;
3686
3687 // These can all be one common function.
|
3688 karl 1.12.2.5 Uint32 maxObjectCount;
3689 if (!in.getUint32(maxObjectCount))
|
3690 karl 1.12.2.1 return 0;
3691 Uint32Arg operationTimeout;
3692 if (!in.getUint32Arg(operationTimeout))
3693 return 0;
3694 String filterQueryLanguage;
3695 if (!in.getString(filterQueryLanguage))
3696 return 0;
3697 String filterQuery;
3698 if (!in.getString(filterQuery))
3699 return 0;
3700
3701 AutoPtr<CIMOpenReferenceInstancePathsRequestMessage> request(
3702 new CIMOpenReferenceInstancePathsRequestMessage(
3703 messageId,
3704 nameSpace,
3705 objectName,
3706 resultClass,
3707 role,
3708 filterQueryLanguage,
3709 filterQuery,
3710 operationTimeout,
3711 karl 1.12.2.1 continueOnError,
3712 maxObjectCount,
3713 QueueIdStack(queueId, returnQueueId)));
3714
3715 request->binaryRequest = true;
3716
3717 STAT_SERVERSTART
3718
3719 return request.release();
3720 }
3721 // For the pull Response messages the interface is the message and the,
3722 // not just the responseData.
3723 static void _encodeOpenReferenceInstancePathsResponseBody(
3724 CIMBuffer& out,
3725 CIMOpenReferenceInstancePathsResponseMessage* msg,
3726 CIMResponseData& data,
3727 CIMName& name)
3728 {
3729 /* See ../Server/CIMOperationResponseEncoder.cpp */
3730
3731 static const CIMName NAME("OpenReferenceInstancePaths");
3732 karl 1.12.2.1 name = NAME;
3733
3734 // [endOfSequence]
3735 out.putBoolean(msg->endOfSequence);
3736
3737 // [enumerationContext]
3738 out.putString(msg->enumerationContext);
3739
3740 data.encodeBinaryResponse(out);
3741 }
3742
3743 static CIMOpenReferenceInstancePathsResponseMessage*
3744 _decodeOpenReferenceInstancePathsResponse(
3745 CIMBuffer& in,
3746 const String& messageId)
3747 {
3748 CIMException cimException;
3749
3750 Boolean endOfSequence;
3751 if (!in.getBoolean(endOfSequence))
3752 return 0;
3753 karl 1.12.2.1
3754 String enumerationContext;
3755 if (!in.getString(enumerationContext))
3756 return 0;
3757
3758 CIMOpenReferenceInstancePathsResponseMessage* msg =
3759 new CIMOpenReferenceInstancePathsResponseMessage(
3760 messageId,
3761 cimException,
3762 endOfSequence,
3763 enumerationContext,
3764 QueueIdStack());
3765
3766 // Instead of resolving the binary data right here, we delegate this
3767 // to a later point in time when the data is actually retrieved through
3768 // a call to getNamedInstances, which is going to resolve the binary
3769 // data when the callback function is registered.
3770 // This allows an alternate client implementation to gain direct access
3771 // to the binary data and pass this for example to the JNI implementation
3772 // of the JSR48 CIM Client for Java.
3773 CIMResponseData& responseData = msg->getResponseData();
3774 karl 1.12.2.1 responseData.setRemainingBinaryData(in);
3775
3776 msg->binaryRequest=true;
3777 return msg;
3778 }
3779
3780 //==============================================================================
3781 //
3782 // OpenAssociatorInstances
3783 //
3784 //==============================================================================
3785
3786 static void _encodeOpenAssociatorInstancesRequest(
3787 CIMBuffer& buf,
3788 CIMOpenAssociatorInstancesRequestMessage* msg,
3789 CIMName& name)
3790 {
3791 /* See ../Client/CIMOperationRequestEncoder.cpp */
3792
3793 static const CIMName NAME("OpenAssociatorInstances");
3794 name = NAME;
3795 karl 1.12.2.1
3796 // [HEADER]
3797
3798 Uint32 flags = 0;
3799
3800 if (msg->includeClassOrigin)
3801 flags |= INCLUDE_CLASS_ORIGIN;
3802
3803 if (msg->continueOnError)
3804 flags |= CONTINUE_ON_ERROR;
3805
3806 _putHeader(buf, flags, msg->messageId, OP_OpenAssociatorInstances);
3807
3808 // [NAMESPACE]
3809 buf.putNamespaceName(msg->nameSpace);
3810
3811 // [OBJECT-NAME]
3812 buf.putObjectPath(msg->objectName);
3813
3814 // [ASSOC-CLASS]
3815 buf.putName(msg->assocClass);
3816 karl 1.12.2.1
3817 // [RESULT-CLASS]
3818 buf.putName(msg->resultClass);
3819
3820 // [ROLE]
3821 buf.putString(msg->role);
3822
3823 // [RESULT-ROLE]
3824 buf.putString(msg->resultRole);
3825
3826 // [PROPERTY-LIST]
3827 buf.putPropertyList(msg->propertyList);
3828
|
3829 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
3830 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
3831 buf.putString(msg->filterQueryLanguage);
3832 buf.putString(msg->filterQuery);
3833 }
3834
3835 static CIMOpenAssociatorInstancesRequestMessage*
3836 _decodeOpenAssociatorInstancesRequest(
3837 CIMBuffer& in,
3838 Uint32 queueId,
3839 Uint32 returnQueueId,
3840 Uint32 flags,
3841 const String& messageId)
3842 {
3843 /* See ../Server/CIMOperationRequestDecoder.cpp */
3844
3845 STAT_GETSTARTTIME
3846
3847 Boolean includeClassOrigin = flags & INCLUDE_CLASS_ORIGIN;
3848 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
3849
3850 // [NAMESPACE]
3851 karl 1.12.2.1
3852 CIMNamespaceName nameSpace;
3853 if (!in.getNamespaceName(nameSpace))
3854 return 0;
3855
3856 // [OBJECT-NAME]
3857
3858 CIMObjectPath objectName;
3859
3860 if (!in.getObjectPath(objectName))
3861 return 0;
3862
3863 // [ASSOC-CLASS]
3864
3865 CIMName assocClass;
3866
3867 if (!in.getName(assocClass))
3868 return 0;
3869
3870 // [RESULT-CLASS]
3871
3872 karl 1.12.2.1 CIMName resultClass;
3873
3874 if (!in.getName(resultClass))
3875 return 0;
3876
3877 // [ROLE]
3878
3879 String role;
3880
3881 if (!in.getString(role))
3882 return 0;
3883
3884 // [RESULT-ROLE]
3885
3886 String resultRole;
3887
3888 if (!in.getString(resultRole))
3889 return 0;
3890
3891 // [PROPERTY-LIST]
3892 CIMPropertyList propertyList;
3893 karl 1.12.2.1 if (!in.getPropertyList(propertyList))
3894 return 0;
3895
3896 // These can all be one common function.
|
3897 karl 1.12.2.5 Uint32 maxObjectCount;
3898 if (!in.getUint32(maxObjectCount))
|
3899 karl 1.12.2.1 return 0;
3900 Uint32Arg operationTimeout;
3901 if (!in.getUint32Arg(operationTimeout))
3902 return 0;
3903 String filterQueryLanguage;
3904 if (!in.getString(filterQueryLanguage))
3905 return 0;
3906 String filterQuery;
3907 if (!in.getString(filterQuery))
3908 return 0;
3909
3910 AutoPtr<CIMOpenAssociatorInstancesRequestMessage> request(
3911 new CIMOpenAssociatorInstancesRequestMessage(
3912 messageId,
3913 nameSpace,
3914 objectName,
3915 assocClass,
3916 resultClass,
3917 role,
3918 resultRole,
3919 includeClassOrigin,
3920 karl 1.12.2.1 propertyList,
3921 filterQueryLanguage,
3922 filterQuery,
3923 operationTimeout,
3924 continueOnError,
3925 maxObjectCount,
3926 QueueIdStack(queueId, returnQueueId)));
3927
3928 request->binaryRequest = true;
3929
3930 STAT_SERVERSTART
3931
3932 return request.release();
3933 }
3934 // For the pull Response messages the interface is the message and the,
3935 // not just the responseData.
3936 static void _encodeOpenAssociatorInstancesResponseBody(
3937 CIMBuffer& out,
3938 CIMOpenAssociatorInstancesResponseMessage* msg,
3939 CIMResponseData& data,
3940 CIMName& name)
3941 karl 1.12.2.1 {
3942 /* See ../Server/CIMOperationResponseEncoder.cpp */
3943
3944 static const CIMName NAME("OpenAssociatorInstances");
3945 name = NAME;
3946
3947 // [endOfSequence]
3948 out.putBoolean(msg->endOfSequence);
3949
3950 // [enumerationContext]
3951 out.putString(msg->enumerationContext);
3952
3953 data.encodeBinaryResponse(out);
3954 }
3955
3956 static CIMOpenAssociatorInstancesResponseMessage*
3957 _decodeOpenAssociatorInstancesResponse(
3958 CIMBuffer& in,
3959 const String& messageId)
3960 {
3961 CIMException cimException;
3962 karl 1.12.2.1
3963 Boolean endOfSequence;
3964 if (!in.getBoolean(endOfSequence))
3965 return 0;
3966
3967 String enumerationContext;
3968 if (!in.getString(enumerationContext))
3969 return 0;
3970
3971 CIMOpenAssociatorInstancesResponseMessage* msg =
3972 new CIMOpenAssociatorInstancesResponseMessage(
3973 messageId,
3974 cimException,
3975 endOfSequence,
3976 enumerationContext,
3977 QueueIdStack());
3978
3979 // Instead of resolving the binary data right here, we delegate this
3980 // to a later point in time when the data is actually retrieved through
3981 // a call to getNamedInstances, which is going to resolve the binary
3982 // data when the callback function is registered.
3983 karl 1.12.2.1 // This allows an alternate client implementation to gain direct access
3984 // to the binary data and pass this for example to the JNI implementation
3985 // of the JSR48 CIM Client for Java.
3986 CIMResponseData& responseData = msg->getResponseData();
3987 responseData.setRemainingBinaryData(in);
3988
3989 msg->binaryRequest=true;
3990 return msg;
3991 }
3992
3993 //==============================================================================
3994 //
3995 // OpenAssociatorInstancePaths
3996 //
3997 //==============================================================================
3998
3999 static void _encodeOpenAssociatorInstancePathsRequest(
4000 CIMBuffer& buf,
4001 CIMOpenAssociatorInstancePathsRequestMessage* msg,
4002 CIMName& name)
4003 {
4004 karl 1.12.2.1 /* See ../Client/CIMOperationRequestEncoder.cpp */
4005
4006 static const CIMName NAME("OpenAssociatorInstancePaths");
4007 name = NAME;
4008
4009 // [HEADER]
4010
4011 Uint32 flags = 0;
4012
4013 if (msg->continueOnError)
4014 flags |= CONTINUE_ON_ERROR;
4015
4016 _putHeader(buf, flags, msg->messageId, OP_OpenAssociatorInstancePaths);
4017
4018 // [NAMESPACE]
4019 buf.putNamespaceName(msg->nameSpace);
4020
4021 // [OBJECT-NAME]
4022 buf.putObjectPath(msg->objectName);
4023
4024 // [ASSOC-CLASS]
4025 karl 1.12.2.1 buf.putName(msg->assocClass);
4026
4027 // [RESULT-CLASS]
4028 buf.putName(msg->resultClass);
4029
4030 // [ROLE]
4031 buf.putString(msg->role);
4032
4033 // [RESULT-ROLE]
4034 buf.putString(msg->resultRole);
4035
|
4036 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
4037 karl 1.12.2.1 buf.putUint32Arg(msg->operationTimeout);
4038 buf.putString(msg->filterQueryLanguage);
4039 buf.putString(msg->filterQuery);
4040 }
4041
4042 static CIMOpenAssociatorInstancePathsRequestMessage*
4043 _decodeOpenAssociatorInstancePathsRequest(
4044 CIMBuffer& in,
4045 Uint32 queueId,
4046 Uint32 returnQueueId,
4047 Uint32 flags,
4048 const String& messageId)
4049 {
4050 /* See ../Server/CIMOperationRequestDecoder.cpp */
4051
4052 STAT_GETSTARTTIME
4053
4054 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
4055
4056 // [NAMESPACE]
4057
4058 karl 1.12.2.1 CIMNamespaceName nameSpace;
4059 if (!in.getNamespaceName(nameSpace))
4060 return 0;
4061
4062 // [OBJECT-NAME]
4063
4064 CIMObjectPath objectName;
4065 if (!in.getObjectPath(objectName))
4066 return 0;
4067
4068 // [ASSOC-CLASS]
4069
4070 CIMName assocClass;
4071 if (!in.getName(assocClass))
4072 return 0;
4073
4074 // [RESULT-CLASS]
4075
4076 CIMName resultClass;
4077 if (!in.getName(resultClass))
4078 return 0;
4079 karl 1.12.2.1
4080 // [ROLE]
4081
4082 String role;
4083 if (!in.getString(role))
4084 return 0;
4085
4086 // [RESULT-ROLE]
4087
4088 String resultRole;
4089 if (!in.getString(resultRole))
4090 return 0;
4091
4092 // These can all be one common function.
|
4093 karl 1.12.2.5 Uint32 maxObjectCount;
4094 if (!in.getUint32(maxObjectCount))
|
4095 karl 1.12.2.1 return 0;
4096 Uint32Arg operationTimeout;
4097 if (!in.getUint32Arg(operationTimeout))
4098 return 0;
4099 String filterQueryLanguage;
4100 if (!in.getString(filterQueryLanguage))
4101 return 0;
4102 String filterQuery;
4103 if (!in.getString(filterQuery))
4104 return 0;
4105
4106 AutoPtr<CIMOpenAssociatorInstancePathsRequestMessage> request(
4107 new CIMOpenAssociatorInstancePathsRequestMessage(
4108 messageId,
4109 nameSpace,
4110 objectName,
4111 assocClass,
4112 resultClass,
4113 role,
4114 resultRole,
4115 filterQueryLanguage,
4116 karl 1.12.2.1 filterQuery,
4117 operationTimeout,
4118 continueOnError,
4119 maxObjectCount,
4120 QueueIdStack(queueId, returnQueueId)));
4121
4122 request->binaryRequest = true;
4123
4124 STAT_SERVERSTART
4125
4126 return request.release();
4127 }
4128
4129 static void _encodeOpenAssociatorInstancePathsResponseBody(
4130 CIMBuffer& out,
4131 CIMOpenAssociatorInstancePathsResponseMessage* msg,
4132 CIMResponseData& data,
4133 CIMName& name)
4134 {
4135 /* See ../Server/CIMOperationResponseEncoder.cpp */
4136
4137 karl 1.12.2.1 static const CIMName NAME("OpenAssociatorInstancePaths");
4138 name = NAME;
4139
4140 // [endOfSequence]
4141 out.putBoolean(msg->endOfSequence);
4142
4143 // [enumerationContext]
4144 out.putString(msg->enumerationContext);
4145
4146 data.encodeBinaryResponse(out);
4147 }
4148
4149 static CIMOpenAssociatorInstancePathsResponseMessage*
4150 _decodeOpenAssociatorInstancePathsResponse(
4151 CIMBuffer& in,
4152 const String& messageId)
4153 {
4154 CIMException cimException;
4155
4156 Boolean endOfSequence;
4157 if (!in.getBoolean(endOfSequence))
4158 karl 1.12.2.1 return 0;
4159
4160 String enumerationContext;
4161 if (!in.getString(enumerationContext))
4162 return 0;
4163
4164 CIMOpenAssociatorInstancePathsResponseMessage* msg =
4165 new CIMOpenAssociatorInstancePathsResponseMessage(
4166 messageId,
4167 cimException,
4168 endOfSequence,
4169 enumerationContext,
4170 QueueIdStack());
4171
4172 // Instead of resolving the binary data right here, we delegate this
4173 // to a later point in time when the data is actually retrieved through
4174 // a call to getNamedInstances, which is going to resolve the binary
4175 // data when the callback function is registered.
4176 // This allows an alternate client implementation to gain direct access
4177 // to the binary data and pass this for example to the JNI implementation
4178 // of the JSR48 CIM Client for Java.
4179 karl 1.12.2.1 CIMResponseData& responseData = msg->getResponseData();
4180 responseData.setRemainingBinaryData(in);
4181
4182 msg->binaryRequest=true;
4183 return msg;
4184 }
4185
4186 //==============================================================================
4187 //
4188 // PullInstancesWithPath
4189 //
4190 //==============================================================================
4191
4192 static void _encodePullInstancesWithPathRequest(
4193 CIMBuffer& buf,
4194 CIMPullInstancesWithPathRequestMessage* msg,
4195 CIMName& name)
4196 {
4197 /* See ../Client/CIMOperationRequestEncoder.cpp */
4198
4199 static const CIMName NAME("PullInstancesWithPath");
4200 karl 1.12.2.1 name = NAME;
4201
4202 // [HEADER]
4203
4204 Uint32 flags = 0;
4205
4206 _putHeader(buf, flags, msg->messageId, OP_PullInstancesWithPath);
4207
4208 // [NAMESPACE]
4209 buf.putNamespaceName(msg->nameSpace);
4210
4211 // [EnumerationContext]
4212 buf.putString(msg->enumerationContext);
4213
|
4214 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
4215 karl 1.12.2.1 }
4216
4217 static CIMPullInstancesWithPathRequestMessage*
4218 _decodePullInstancesWithPathRequest(
4219 CIMBuffer& in,
4220 Uint32 queueId,
4221 Uint32 returnQueueId,
4222 Uint32 flags,
4223 const String& messageId)
4224 {
4225 /* See ../Server/CIMOperationRequestDecoder.cpp */
4226
4227 STAT_GETSTARTTIME
4228
4229 // [NAMESPACE]
4230
4231 CIMNamespaceName nameSpace;
4232 if (!in.getNamespaceName(nameSpace))
4233 return 0;
4234
4235 // [EnumerationContext]
4236 karl 1.12.2.1 String enumerationContext;
4237 if (!in.getString(enumerationContext))
4238 {
4239 return 0;
4240 }
4241
4242 // [MACTCOUNT]
|
4243 karl 1.12.2.5 Uint32 maxObjectCount;
4244 if (!in.getUint32(maxObjectCount))
|
4245 karl 1.12.2.1 return 0;
4246
4247 AutoPtr<CIMPullInstancesWithPathRequestMessage> request(
4248 new CIMPullInstancesWithPathRequestMessage(
4249 messageId,
4250 nameSpace,
4251 enumerationContext,
4252 maxObjectCount,
4253 QueueIdStack(queueId, returnQueueId)));
4254
4255 request->binaryRequest = true;
4256
4257 STAT_SERVERSTART
4258
4259 return request.release();
4260 }
4261
4262 // For the pull Response messages the interface is the message and the,
4263 // not just the responseData.
4264 static void _encodePullInstancesWithPathResponseBody(
4265 CIMBuffer& out,
4266 karl 1.12.2.1 CIMPullInstancesWithPathResponseMessage* msg,
4267 CIMResponseData& data,
4268 CIMName& name)
4269 {
4270 /* See ../Server/CIMOperationResponseEncoder.cpp */
4271
4272 static const CIMName NAME("PullInstancesWithPath");
4273 name = NAME;
4274 // [endOfSequence]
4275 out.putBoolean(msg->endOfSequence);
4276
4277 // [enumerationContext]
4278 out.putString(msg->enumerationContext);
4279
4280 data.encodeBinaryResponse(out);
4281 }
4282
4283 static CIMPullInstancesWithPathResponseMessage*
4284 _decodePullInstancesWithPathResponse(
4285 CIMBuffer& in,
4286 const String& messageId)
4287 karl 1.12.2.1 {
4288 CIMException cimException;
4289
4290 Boolean endOfSequence;
4291 if (!in.getBoolean(endOfSequence))
4292 return 0;
4293
4294 String enumerationContext;
4295 if (!in.getString(enumerationContext))
4296 return 0;
4297
4298 CIMPullInstancesWithPathResponseMessage* msg =
4299 new CIMPullInstancesWithPathResponseMessage(
4300 messageId,
4301 cimException,
4302 endOfSequence,
4303 enumerationContext,
4304 QueueIdStack());
4305
4306 // Instead of resolving the binary data right here, we delegate this
4307 // to a later point in time when the data is actually retrieved through
4308 karl 1.12.2.1 // a call to getNamedInstances, which is going to resolve the binary
4309 // data when the callback function is registered.
4310 // This allows an alternate client implementation to gain direct access
4311 // to the binary data and pass this for example to the JNI implementation
4312 // of the JSR48 CIM Client for Java.
4313 CIMResponseData& responseData = msg->getResponseData();
4314 responseData.setRemainingBinaryData(in);
4315
4316 msg->binaryRequest=true;
4317 return msg;
4318 }
4319 //==============================================================================
4320 //
4321 // PullInstancePaths
4322 //
4323 //==============================================================================
4324
4325 static void _encodePullInstancePathsRequest(
4326 CIMBuffer& buf,
4327 CIMPullInstancePathsRequestMessage* msg,
4328 CIMName& name)
4329 karl 1.12.2.1 {
4330 /* See ../Client/CIMOperationRequestEncoder.cpp */
4331
4332 static const CIMName NAME("PullInstancePaths");
4333 name = NAME;
4334
4335 // [HEADER]
4336
4337 Uint32 flags = 0;
4338
4339 _putHeader(buf, flags, msg->messageId, OP_PullInstancePaths);
4340
4341 // [NAMESPACE]
4342 buf.putNamespaceName(msg->nameSpace);
4343
4344 // [EnumerationContext]
4345 buf.putString(msg->enumerationContext);
4346
|
4347 karl 1.12.2.5 buf.putUint32(msg->maxObjectCount);
|
4348 karl 1.12.2.1 }
4349
4350 static CIMPullInstancePathsRequestMessage*
4351 _decodePullInstancePathsRequest(
4352 CIMBuffer& in,
4353 Uint32 queueId,
4354 Uint32 returnQueueId,
4355 Uint32 flags,
4356 const String& messageId)
4357 {
4358 /* See ../Server/CIMOperationRequestDecoder.cpp */
4359
4360 STAT_GETSTARTTIME
4361
4362 // [NAMESPACE]
4363
4364 CIMNamespaceName nameSpace;
4365 if (!in.getNamespaceName(nameSpace))
4366 return 0;
4367
4368 // [EnumerationContext]
4369 karl 1.12.2.1 String enumerationContext;
4370 if (!in.getString(enumerationContext))
4371 {
4372 return 0;
4373 }
4374
4375 // [MAXOBJECTCOUNT]
|
4376 karl 1.12.2.5 Uint32 maxObjectCount;
4377 if (!in.getUint32(maxObjectCount))
|
4378 karl 1.12.2.1 return 0;
4379
4380 AutoPtr<CIMPullInstancePathsRequestMessage> request(
4381 new CIMPullInstancePathsRequestMessage(
4382 messageId,
4383 nameSpace,
4384 enumerationContext,
4385 maxObjectCount,
4386 QueueIdStack(queueId, returnQueueId)));
4387
4388 request->binaryRequest = true;
4389
4390 STAT_SERVERSTART
4391
4392 return request.release();
4393 }
4394
4395 // For the pull Response messages the interface is the message and the,
4396 // not just the responseData.
4397 static void _encodePullInstancePathsResponseBody(
4398 CIMBuffer& out,
4399 karl 1.12.2.1 CIMPullInstancePathsResponseMessage* msg,
4400 CIMResponseData& data,
4401 CIMName& name)
4402 {
4403 /* See ../Server/CIMOperationResponseEncoder.cpp */
4404
4405 static const CIMName NAME("PullInstancePaths");
4406 name = NAME;
4407
4408 // [endOfSequence]
4409 out.putBoolean(msg->endOfSequence);
4410
4411 // [enumerationContext]
4412 out.putString(msg->enumerationContext);
4413
4414 data.encodeBinaryResponse(out);
4415 }
4416
4417 static CIMPullInstancePathsResponseMessage*
4418 _decodePullInstancePathsResponse(
4419 CIMBuffer& in,
4420 karl 1.12.2.1 const String& messageId)
4421 {
4422 CIMException cimException;
4423
4424 Boolean endOfSequence;
4425 if (!in.getBoolean(endOfSequence))
4426 return 0;
4427
4428 String enumerationContext;
4429 if (!in.getString(enumerationContext))
4430 return 0;
4431
4432 CIMPullInstancePathsResponseMessage* msg =
4433 new CIMPullInstancePathsResponseMessage(
4434 messageId,
4435 cimException,
4436 endOfSequence,
4437 enumerationContext,
4438 QueueIdStack());
4439
4440 // Instead of resolving the binary data right here, we delegate this
4441 karl 1.12.2.1 // to a later point in time when the data is actually retrieved through
4442 // a call to getNamedInstances, which is going to resolve the binary
4443 // data when the callback function is registered.
4444 // This allows an alternate client implementation to gain direct access
4445 // to the binary data and pass this for example to the JNI implementation
4446 // of the JSR48 CIM Client for Java.
4447 CIMResponseData& responseData = msg->getResponseData();
4448 responseData.setRemainingBinaryData(in);
4449
4450 msg->binaryRequest=true;
4451 return msg;
4452 }
4453 //==============================================================================
4454 //
4455 // CloseEnumeration
4456 //
4457 //==============================================================================
4458
4459 static void _encodeCloseEnumerationRequest(
4460 CIMBuffer& buf,
4461 CIMCloseEnumerationRequestMessage* msg,
4462 karl 1.12.2.1 CIMName& name)
4463 {
4464 /* See ../Client/CIMOperationRequestEncoder.cpp */
4465
4466 static const CIMName NAME("CloseEnumeration");
4467 name = NAME;
4468
4469 // [HEADER]
4470
4471 Uint32 flags = 0;
4472
4473 _putHeader(buf, flags, msg->messageId, OP_CloseEnumeration);
4474
4475 // [NAMESPACE]
4476 buf.putNamespaceName(msg->nameSpace);
4477
4478 // [EnumerationContext]
4479 buf.putString(msg->enumerationContext);
4480 }
4481
4482 static CIMCloseEnumerationRequestMessage* _decodeCloseEnumerationRequest(
4483 karl 1.12.2.1 CIMBuffer& in,
4484 Uint32 queueId,
4485 Uint32 returnQueueId,
4486 Uint32 flags,
4487 const String& messageId)
4488 {
4489 /* See ../Server/CIMOperationRequestDecoder.cpp */
4490
4491 STAT_GETSTARTTIME
4492
4493 // [NAMESPACE]
4494
4495 CIMNamespaceName nameSpace;
4496 if (!in.getNamespaceName(nameSpace))
4497 return 0;
4498
4499 // [EnumerationContext]
4500 String enumerationContext;
4501 if (!in.getString(enumerationContext))
4502 {
4503 return 0;
4504 karl 1.12.2.1 }
4505
4506 AutoPtr<CIMCloseEnumerationRequestMessage> request(
4507 new CIMCloseEnumerationRequestMessage(
4508 messageId,
4509 nameSpace,
4510 enumerationContext,
4511 QueueIdStack(queueId, returnQueueId)));
4512
4513 request->binaryRequest = true;
4514
4515 STAT_SERVERSTART
4516
4517 return request.release();
4518 }
4519
4520 static void _encodeCloseEnumerationResponseBody(
4521 CIMBuffer& out,
4522 CIMCloseEnumerationResponseMessage* msg,
4523 CIMName& name)
4524 {
4525 karl 1.12.2.1 /* See ../Server/CIMOperationResponseEncoder.cpp */
4526
4527 static const CIMName NAME("CloseEnumeration");
4528 name = NAME;
4529 }
4530
4531 static CIMCloseEnumerationResponseMessage*
4532 _decodeCloseEnumerationResponse(
4533 CIMBuffer& in,
4534 const String& messageId)
4535 {
4536 CIMException cimException;
4537
4538 CIMCloseEnumerationResponseMessage* msg =
4539 new CIMCloseEnumerationResponseMessage(
4540 messageId,
4541 cimException,
4542 QueueIdStack());
4543
4544 msg->binaryRequest=true;
4545 return msg;
4546 karl 1.12.2.1 }
4547 //==============================================================================
4548 //
4549 // EnumerationCount
4550 //
4551 //==============================================================================
4552
4553 static void _encodeEnumerationCountRequest(
4554 CIMBuffer& buf,
4555 CIMEnumerationCountRequestMessage* msg,
4556 CIMName& name)
4557 {
4558 /* See ../Client/CIMOperationRequestEncoder.cpp */
4559
4560 static const CIMName NAME("EnumerationCount");
4561 name = NAME;
4562
4563 // [HEADER]
4564 Uint32 flags = 0;
4565
4566 _putHeader(buf, flags, msg->messageId, OP_EnumerationCount);
4567 karl 1.12.2.1
4568 // [NAMESPACE]
4569 buf.putNamespaceName(msg->nameSpace);
4570
4571 // [EnumerationContext]
4572 buf.putString(msg->enumerationContext);
4573 }
4574
4575 static CIMEnumerationCountRequestMessage* _decodeEnumerationCountRequest(
4576 CIMBuffer& in,
4577 Uint32 queueId,
4578 Uint32 returnQueueId,
4579 Uint32 flags,
4580 const String& messageId)
4581 {
4582 /* See ../Server/CIMOperationRequestDecoder.cpp */
4583
4584 STAT_GETSTARTTIME
4585
4586 // [NAMESPACE]
4587
4588 karl 1.12.2.1 CIMNamespaceName nameSpace;
4589 if (!in.getNamespaceName(nameSpace))
4590 return 0;
4591
4592 // [EnumerationContext]
4593 String enumerationContext;
4594 if (!in.getString(enumerationContext))
4595 {
4596 return 0;
4597 }
4598
4599 AutoPtr<CIMEnumerationCountRequestMessage> request(
4600 new CIMEnumerationCountRequestMessage(
4601 messageId,
4602 nameSpace,
4603 enumerationContext,
4604 QueueIdStack(queueId, returnQueueId)));
4605
4606 request->binaryRequest = true;
4607
4608 STAT_SERVERSTART
4609 karl 1.12.2.1
4610 return request.release();
4611 }
4612
4613 static void _encodeEnumerationCountResponseBody(
4614 CIMBuffer& out,
4615 CIMEnumerationCountResponseMessage* msg,
4616 CIMName& name)
4617 {
4618 /* See ../Server/CIMOperationResponseEncoder.cpp */
4619
4620 static const CIMName NAME("EnumerationCount");
4621 name = NAME;
4622
4623 // [count]
4624 out.putUint64Arg(msg->count);
4625 }
4626
4627 static CIMEnumerationCountResponseMessage*
4628 _decodeEnumerationCountResponse(
4629 CIMBuffer& in,
4630 karl 1.12.2.1 const String& messageId)
4631 {
4632 CIMException cimException;
4633 Uint64 count;
4634 if (!in.getUint64(count))
4635 return 0;
4636
4637 CIMEnumerationCountResponseMessage* msg =
4638 new CIMEnumerationCountResponseMessage(
4639 messageId,
4640 cimException,
4641 QueueIdStack(),
4642 count);
4643
4644 msg->binaryRequest=true;
4645 return msg;
4646 }
|
4647 karl 1.12.2.6 //==============================================================================
4648 //
4649 // OpenQueryInstances
4650 //
4651 //==============================================================================
4652
4653 static void _encodeOpenQueryInstancesRequest(
4654 CIMBuffer& buf,
4655 CIMOpenQueryInstancesRequestMessage* msg,
4656 CIMName& name)
4657 {
4658 /* See ../Client/CIMOperationRequestEncoder.cpp */
4659
4660 static const CIMName NAME("OpenQueryInstances");
4661
4662 // [HEADER]
4663
4664 Uint32 flags = 0;
4665
4666 if (msg->continueOnError)
4667 flags |= CONTINUE_ON_ERROR;
4668 karl 1.12.2.6
4669 _putHeader(buf, flags, msg->messageId, OP_OpenQueryInstances);
4670
4671 // [NAMESPACE]
4672 buf.putNamespaceName(msg->nameSpace);
4673
4674 // [filterQuery and filterQueryLanguage]
4675 buf.putString(msg->filterQuery);
4676 buf.putString(msg->filterQueryLanguage);
4677
4678 // [returnQueryResultClass]
4679 buf.putBoolean(msg->returnQueryResultClass);
4680
4681 buf.putUint32(msg->maxObjectCount);
4682 buf.putUint32Arg(msg->operationTimeout);
4683 }
4684
4685 static CIMOpenQueryInstancesRequestMessage*
4686 _decodeOpenQueryInstancesRequest(
4687 CIMBuffer& in,
4688 Uint32 queueId,
4689 karl 1.12.2.6 Uint32 returnQueueId,
4690 Uint32 flags,
4691 const String& messageId)
4692 {
4693 /* See ../Server/CIMOperationRequestDecoder.cpp */
4694
4695 STAT_GETSTARTTIME
4696
4697 Boolean continueOnError = flags & CONTINUE_ON_ERROR;
4698
4699 // [NAMESPACE]
4700 CIMNamespaceName nameSpace;
4701 if (!in.getNamespaceName(nameSpace))
4702 return 0;
4703
4704 // [FILTERQUERY and FILTERQUERYSTRING]
4705 String filterQuery;
4706 if (!in.getString(filterQuery))
4707 return 0;
4708 String filterQueryLanguage;
4709 if (!in.getString(filterQueryLanguage))
4710 karl 1.12.2.6 return 0;
4711
4712 // [RETURNQUERYRESULTCLASS]
4713 Boolean returnQueryResultClass;
4714 if (!in.getBoolean(returnQueryResultClass))
4715 return 0;
4716
4717 // These can all be one common function.
4718 Uint32 maxObjectCount;
4719 if (!in.getUint32(maxObjectCount))
4720 return 0;
4721 Uint32Arg operationTimeout;
4722 if (!in.getUint32Arg(operationTimeout))
4723 return 0;
4724
4725 AutoPtr<CIMOpenQueryInstancesRequestMessage> request(
4726 new CIMOpenQueryInstancesRequestMessage(
4727 messageId,
4728 nameSpace,
4729 filterQuery,
4730 filterQueryLanguage,
4731 karl 1.12.2.6 returnQueryResultClass,
4732 operationTimeout,
4733 continueOnError,
4734 maxObjectCount,
4735 QueueIdStack(queueId, returnQueueId)));
4736
4737 request->binaryRequest = true;
4738
4739 STAT_SERVERSTART
4740
4741 return request.release();
4742 }
4743
4744 static void _encodeOpenQueryInstancesResponseBody(
4745 CIMBuffer& out,
4746 CIMOpenQueryInstancesResponseMessage* msg,
4747 CIMResponseData& data,
4748 CIMName& name)
4749 {
4750 /* See ../Server/CIMOperationResponseEncoder.cpp */
4751
4752 karl 1.12.2.6 out.putClass(msg->queryResultClass);
4753
4754 // [endOfSequence]
4755 out.putBoolean(msg->endOfSequence);
4756
4757 // [enumerationContext]
4758 out.putString(msg->enumerationContext);
4759
4760 data.encodeBinaryResponse(out);
4761 }
4762
4763 static CIMOpenQueryInstancesResponseMessage*
4764 _decodeOpenQueryInstancesResponse(
4765 CIMBuffer& in,
4766 const String& messageId)
4767 {
4768 CIMException cimException;
4769
4770 // KS_TODO Should we set validation???
4771 // Turn on validation: This is a debugging tool
4772 //#if defined(ENABLE_VALIDATION)
4773 karl 1.12.2.6 // buf.setValidate(true);
4774 //#endif
4775
4776 Boolean endOfSequence;
4777 if (!in.getBoolean(endOfSequence))
4778 return 0;
4779
4780 String enumerationContext;
4781 if (!in.getString(enumerationContext))
4782 return 0;
4783
4784 CIMOpenQueryInstancesResponseMessage* msg =
4785 new CIMOpenQueryInstancesResponseMessage(
4786 messageId,
4787 cimException,
4788 CIMClass(),
4789 endOfSequence,
4790 enumerationContext,
4791 QueueIdStack());
4792
4793 // Instead of resolving the binary data here, delegate this
4794 karl 1.12.2.6 // to a later point in time when the data is actually retrieved through
4795 // a call to CIMResponseData::getInstances, which
4796 // resolves the binary data as it is passed to the next interface.
4797 // This allows an alternate client implementation to gain direct access
4798 // to the binary data and pass this for example to the JNI implementation
4799 // of the JSR48 CIM Client for Java.
4800 CIMResponseData& responseData = msg->getResponseData();
4801 responseData.setRemainingBinaryData(in);
4802
4803 msg->binaryRequest=true;
4804 return msg;
4805 }
|
4806 karl 1.12.2.1
|
4807 karl 1.12.2.4 // EXP_PULL_END
|
4808 karl 1.12.2.1
4809
4810 //==============================================================================
4811 //
4812 // BinaryCodec::hexDump()
4813 //
4814 //==============================================================================
4815
4816 #if defined(PEGASUS_DEBUG)
4817
4818 void BinaryCodec::hexDump(const void* data, size_t size)
4819 {
4820 unsigned char* p = (unsigned char*)data;
4821 unsigned char buf[16];
4822 size_t n = 0;
4823
4824 for (size_t i = 0, col = 0; i < size; i++)
4825 {
4826 unsigned char c = p[i];
4827 buf[n++] = c;
4828
4829 karl 1.12.2.1 if (col == 0)
4830 printf("%06X ", (unsigned int)i);
4831
4832 printf("%02X ", c);
4833
4834 if (col + 1 == sizeof(buf) || i + 1 == size)
4835 {
4836 for (size_t j = col + 1; j < sizeof(buf); j++)
4837 printf(" ");
4838
4839 for (size_t j = 0; j < n; j++)
4840 {
4841 c = buf[j];
4842
4843 if (c >= ' ' && c <= '~')
4844 printf("%c", buf[j]);
4845 else
4846 printf(".");
4847 }
4848
4849 printf("\n");
4850 karl 1.12.2.1 n = 0;
4851 }
4852
4853 if (col + 1 == sizeof(buf))
4854 col = 0;
4855 else
4856 col++;
4857 }
4858
4859 printf("\n");
4860 }
4861
4862 #endif /* defined(PEGASUS_DEBUG) */
4863
4864 //==============================================================================
4865 //
4866 // BinaryCodec::decodeRequest()
4867 //
4868 //==============================================================================
4869
4870 CIMOperationRequestMessage* BinaryCodec::decodeRequest(
|
4871 karl 1.12.2.3 CIMBuffer& in,
|
4872 karl 1.12.2.1 Uint32 queueId,
4873 Uint32 returnQueueId)
4874 {
4875
4876 // Turn on validation:
4877 #if defined(ENABLE_VALIDATION)
|
4878 karl 1.12.2.3 in.setValidate(true);
|
4879 karl 1.12.2.1 #endif
4880
4881 Uint32 flags;
4882 String messageId;
4883 Operation operation;
4884
|
4885 karl 1.12.2.3
4886 if (!_getHeader(in, flags, messageId, operation))
|
4887 karl 1.12.2.1 {
4888 return 0;
4889 }
4890
4891 switch (operation)
4892 {
4893 case OP_EnumerateInstances:
4894 return _decodeEnumerateInstancesRequest(
|
4895 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4896 karl 1.12.2.1 case OP_EnumerateInstanceNames:
4897 return _decodeEnumerateInstanceNamesRequest(
|
4898 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4899 karl 1.12.2.1 case OP_GetInstance:
4900 return _decodeGetInstanceRequest(
|
4901 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4902 karl 1.12.2.1 case OP_CreateInstance:
4903 return _decodeCreateInstanceRequest(
|
4904 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4905 karl 1.12.2.1 case OP_ModifyInstance:
4906 return _decodeModifyInstanceRequest(
|
4907 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4908 karl 1.12.2.1 case OP_DeleteInstance:
4909 return _decodeDeleteInstanceRequest(
|
4910 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4911 karl 1.12.2.1 case OP_Associators:
4912 return _decodeAssociatorsRequest(
|
4913 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4914 karl 1.12.2.1 case OP_AssociatorNames:
4915 return _decodeAssociatorNamesRequest(
|
4916 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4917 karl 1.12.2.1 case OP_References:
4918 return _decodeReferencesRequest(
|
4919 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4920 karl 1.12.2.1 case OP_ReferenceNames:
4921 return _decodeReferenceNamesRequest(
|
4922 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4923 karl 1.12.2.1 case OP_GetClass:
4924 return _decodeGetClassRequest(
|
4925 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4926 karl 1.12.2.1 case OP_EnumerateClasses:
4927 return _decodeEnumerateClassesRequest(
|
4928 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4929 karl 1.12.2.1 case OP_EnumerateClassNames:
4930 return _decodeEnumerateClassNamesRequest(
|
4931 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4932 karl 1.12.2.1 case OP_CreateClass:
4933 return _decodeCreateClassRequest(
|
4934 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4935 karl 1.12.2.1 case OP_DeleteClass:
4936 return _decodeDeleteClassRequest(
|
4937 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4938 karl 1.12.2.1 case OP_ModifyClass:
4939 return _decodeModifyClassRequest(
|
4940 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4941 karl 1.12.2.1 case OP_SetQualifier:
4942 return _decodeSetQualifierRequest(
|
4943 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4944 karl 1.12.2.1 case OP_GetQualifier:
4945 return _decodeGetQualifierRequest(
|
4946 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4947 karl 1.12.2.1 case OP_DeleteQualifier:
4948 return _decodeDeleteQualifierRequest(
|
4949 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4950 karl 1.12.2.1 case OP_EnumerateQualifiers:
4951 return _decodeEnumerateQualifiersRequest(
|
4952 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4953 karl 1.12.2.1 case OP_GetProperty:
4954 return _decodeGetPropertyRequest(
|
4955 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4956 karl 1.12.2.1 case OP_SetProperty:
4957 return _decodeSetPropertyRequest(
|
4958 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4959 karl 1.12.2.1 case OP_InvokeMethod:
4960 return _decodeInvokeMethodRequest(
|
4961 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4962 karl 1.12.2.1 case OP_ExecQuery:
4963 return _decodeExecQueryRequest(
|
4964 karl 1.12.2.3 in, queueId, returnQueueId, messageId);
|
4965 karl 1.12.2.4 //EXP_PULL_BEGIN
|
4966 karl 1.12.2.1 case OP_OpenEnumerateInstances:
4967 return _decodeOpenEnumerateInstancesRequest(
|
4968 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4969 karl 1.12.2.1 break;
4970 case OP_OpenEnumerateInstancePaths:
4971 return _decodeOpenEnumerateInstancePathsRequest(
|
4972 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4973 karl 1.12.2.1 break;
4974 case OP_OpenReferenceInstances:
4975 return _decodeOpenReferenceInstancesRequest(
|
4976 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4977 karl 1.12.2.1 break;
4978 case OP_OpenReferenceInstancePaths:
4979 return _decodeOpenReferenceInstancePathsRequest(
|
4980 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4981 karl 1.12.2.1 break;
4982 case OP_OpenAssociatorInstances:
4983 return _decodeOpenAssociatorInstancesRequest(
|
4984 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4985 karl 1.12.2.1 break;
4986 case OP_OpenAssociatorInstancePaths:
4987 return _decodeOpenAssociatorInstancePathsRequest(
|
4988 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4989 karl 1.12.2.1 break;
4990 case OP_PullInstancesWithPath:
4991 return _decodePullInstancesWithPathRequest(
|
4992 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4993 karl 1.12.2.1 break;
4994 case OP_PullInstancePaths:
4995 return _decodePullInstancePathsRequest(
|
4996 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
4997 karl 1.12.2.1 break;
4998 case OP_CloseEnumeration:
4999 return _decodeCloseEnumerationRequest(
|
5000 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
5001 karl 1.12.2.1 break;
5002 case OP_EnumerationCount:
5003 return _decodeEnumerationCountRequest(
|
5004 karl 1.12.2.3 in, queueId, returnQueueId, flags, messageId);
|
5005 karl 1.12.2.1 break;
|
5006 karl 1.12.2.4 //EXP_PULL_END
|
5007 karl 1.12.2.1 default:
5008 // Unexpected message type
5009 PEGASUS_ASSERT(0);
5010 return 0;
5011 }
5012 }
5013
5014 //==============================================================================
5015 //
5016 // BinaryCodec::decodeResponse()
5017 //
5018 //==============================================================================
5019
5020 CIMResponseMessage* BinaryCodec::decodeResponse(
5021 const Buffer& in)
5022 {
5023 CIMBuffer buf((char*)in.getData(), in.size());
5024 CIMBufferReleaser buf_(buf);
5025
5026 return decodeResponse(buf);
5027 }
5028 karl 1.12.2.1
5029 CIMResponseMessage* BinaryCodec::decodeResponse(
5030 CIMBuffer& buf)
5031 {
|
5032 karl 1.12.2.3 // Turn on validation: This is a debugging tool
|
5033 karl 1.12.2.1 #if defined(ENABLE_VALIDATION)
5034 buf.setValidate(true);
5035 #endif
|
5036 karl 1.12.2.4
|
5037 karl 1.12.2.1 Uint32 flags;
5038 String messageId;
5039 Operation operation;
5040
5041 if (!_getHeader(buf, flags, messageId, operation))
5042 {
5043 throw CIMException(CIM_ERR_FAILED, "Corrupt binary message header");
5044 return 0;
5045 }
5046
5047 CIMResponseMessage* msg = 0;
5048
5049 switch (operation)
5050 {
5051 case OP_EnumerateInstances:
5052 msg = _decodeEnumerateInstancesResponse(buf, messageId);
5053 break;
5054 case OP_EnumerateInstanceNames:
5055 msg = _decodeEnumerateInstanceNamesResponse(buf, messageId);
5056 break;
5057 case OP_GetInstance:
|
5058 thilo.boehm 1.11 msg = _decodeGetInstanceResponse(buf, messageId);
|
5059 mike 1.1 break;
5060 case OP_CreateInstance:
|
5061 thilo.boehm 1.11 msg = _decodeCreateInstanceResponse(buf, messageId);
|
5062 mike 1.1 break;
5063 case OP_ModifyInstance:
|
5064 thilo.boehm 1.11 msg = _decodeModifyInstanceResponse(buf, messageId);
|
5065 mike 1.1 break;
5066 case OP_DeleteInstance:
|
5067 thilo.boehm 1.11 msg = _decodeDeleteInstanceResponse(messageId);
|
5068 mike 1.1 break;
5069 case OP_Associators:
|
5070 thilo.boehm 1.11 msg = _decodeAssociatorsResponse(buf, messageId);
|
5071 mike 1.1 break;
5072 case OP_AssociatorNames:
|
5073 thilo.boehm 1.11 msg = _decodeAssociatorNamesResponse(buf, messageId);
|
5074 mike 1.1 break;
5075 case OP_References:
|
5076 thilo.boehm 1.11 msg = _decodeReferencesResponse(buf, messageId);
|
5077 mike 1.1 break;
5078 case OP_ReferenceNames:
|
5079 thilo.boehm 1.11 msg = _decodeReferenceNamesResponse(buf, messageId);
|
5080 mike 1.1 break;
5081 case OP_GetClass:
|
5082 thilo.boehm 1.11 msg = _decodeGetClassResponse(buf, messageId);
|
5083 mike 1.1 break;
5084 case OP_EnumerateClasses:
|
5085 thilo.boehm 1.11 msg = _decodeEnumerateClassesResponse(buf, messageId);
|
5086 mike 1.1 break;
5087 case OP_EnumerateClassNames:
|
5088 thilo.boehm 1.11 msg = _decodeEnumerateClassNamesResponse(buf, messageId);
|
5089 mike 1.1 break;
5090 case OP_CreateClass:
|
5091 thilo.boehm 1.11 msg = _decodeCreateClassResponse(messageId);
|
5092 mike 1.1 break;
5093 case OP_DeleteClass:
|
5094 thilo.boehm 1.11 msg = _decodeDeleteClassResponse(messageId);
|
5095 mike 1.1 break;
5096 case OP_ModifyClass:
|
5097 thilo.boehm 1.11 msg = _decodeModifyClassResponse(messageId);
|
5098 mike 1.1 break;
5099 case OP_SetQualifier:
|
5100 thilo.boehm 1.11 msg = _decodeSetQualifierResponse(messageId);
|
5101 mike 1.1 break;
5102 case OP_GetQualifier:
|
5103 thilo.boehm 1.11 msg = _decodeGetQualifierResponse(buf, messageId);
|
5104 mike 1.1 break;
5105 case OP_DeleteQualifier:
|
5106 thilo.boehm 1.11 msg = _decodeDeleteQualifierResponse(messageId);
|
5107 mike 1.1 break;
5108 case OP_EnumerateQualifiers:
|
5109 thilo.boehm 1.11 msg = _decodeEnumerateQualifiersResponse(buf, messageId);
|
5110 mike 1.1 break;
5111 case OP_GetProperty:
|
5112 thilo.boehm 1.11 msg = _decodeGetPropertyResponse(buf, messageId);
|
5113 mike 1.1 break;
5114 case OP_SetProperty:
|
5115 thilo.boehm 1.11 msg = _decodeSetPropertyResponse(messageId);
|
5116 mike 1.1 break;
5117 case OP_InvokeMethod:
|
5118 thilo.boehm 1.11 msg = _decodeInvokeMethodResponse(buf, messageId);
|
5119 mike 1.1 break;
5120 case OP_ExecQuery:
|
5121 thilo.boehm 1.11 msg = _decodeExecQueryResponse(buf, messageId);
|
5122 mike 1.1 break;
|
5123 karl 1.12.2.4 //EXP_PULL_BEGIN
|
5124 karl 1.12.2.1 case OP_OpenEnumerateInstances:
5125 msg = _decodeOpenEnumerateInstancesResponse(buf, messageId);
5126 break;
5127 case OP_OpenEnumerateInstancePaths:
5128 msg = _decodeOpenEnumerateInstancePathsResponse(buf, messageId);
5129 break;
5130 case OP_OpenReferenceInstances:
5131 msg = _decodeOpenReferenceInstancesResponse(buf, messageId);
5132 break;
5133 case OP_OpenReferenceInstancePaths:
5134 msg = _decodeOpenReferenceInstancePathsResponse(buf, messageId);
5135 break;
5136 case OP_OpenAssociatorInstances:
5137 msg = _decodeOpenAssociatorInstancesResponse(buf, messageId);
5138 break;
5139 case OP_OpenAssociatorInstancePaths:
5140 msg = _decodeOpenAssociatorInstancePathsResponse(buf, messageId);
5141 break;
5142 case OP_PullInstancesWithPath:
5143 msg = _decodePullInstancesWithPathResponse(buf, messageId);
5144 break;
5145 karl 1.12.2.1 case OP_PullInstancePaths:
5146 msg = _decodePullInstancePathsResponse(buf, messageId);
5147 break;
5148 case OP_CloseEnumeration:
5149 msg = _decodeCloseEnumerationResponse(buf, messageId);
5150 break;
|
5151 karl 1.12.2.6 case OP_OpenQueryInstances:
5152 msg = _decodeCloseEnumerationResponse(buf, messageId);
5153 break;
|
5154 karl 1.12.2.4 //EXP_PULL_END
|
5155 mike 1.1 default:
5156 // Unexpected message type
|
5157 karl 1.12.2.5 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
5158 mike 1.1 break;
5159 }
5160
5161 if (!msg)
|
5162 karl 1.12.2.3 throw CIMException(CIM_ERR_FAILED, "Received corrupted binary message");
|
5163 mike 1.1
5164 return msg;
5165 }
5166
5167 //==============================================================================
5168 //
5169 // BinaryCodec::formatSimpleIMethodRspMessage()
5170 //
5171 //==============================================================================
5172
5173 Buffer BinaryCodec::formatSimpleIMethodRspMessage(
5174 const CIMName& iMethodName,
5175 const String& messageId,
5176 HttpMethod httpMethod,
5177 const ContentLanguageList& httpContentLanguages,
|
5178 karl 1.12.2.1 const Buffer& rtnParams,
|
5179 mike 1.1 const Buffer& body,
5180 Uint64 serverResponseTime,
5181 Boolean isFirst,
|
5182 karl 1.12.2.5 Boolean)
|
5183 mike 1.1 {
5184 Buffer out;
|
5185 karl 1.12.2.3
|
5186 mike 1.1 if (isFirst == true)
5187 {
5188 // Write HTTP header:
|
5189 kumpf 1.6 XmlWriter::appendMethodResponseHeader(out, httpMethod,
|
5190 mike 1.1 httpContentLanguages, 0, serverResponseTime, true);
5191
|
5192 karl 1.12.2.3 for (size_t i=out.size(), k=CIMBuffer::round(i); i<k;i++)
5193 {
5194 out.append('\0');
5195 }
|
5196 mike 1.1 // Binary message header:
5197 CIMBuffer cb(128);
5198 _putHeader(cb, 0, messageId, _NameToOp(iMethodName));
5199 out.append(cb.getData(), cb.size());
5200 }
5201
5202 if (body.size() != 0)
5203 {
5204 out.append(body.getData(), body.size());
5205 }
|
5206 karl 1.12.2.1 // EXP_PULL TODO - TBD Review this.
5207 // If there are any parameters include them here.
5208 // Assumes that it is prebuilt with all components
5209 //
5210 if (rtnParams.size() != 0)
5211 {
5212 out << rtnParams;
5213 }
5214 //
5215 // //EXP_PULL_END
|
5216 mike 1.1
5217 return out;
5218 }
5219
5220 //==============================================================================
5221 //
5222 // BinaryCodec::encodeRequest()
5223 //
5224 //==============================================================================
5225
5226 bool BinaryCodec::encodeRequest(
5227 Buffer& out,
5228 const char* host,
5229 const String& authHeader,
5230 CIMOperationRequestMessage* msg,
5231 bool binaryResponse)
5232 {
5233 CIMBuffer buf;
5234 CIMName name;
5235
5236 switch (msg->getType())
5237 mike 1.1 {
5238 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
5239 {
5240 _encodeEnumerateInstancesRequest(buf,
5241 (CIMEnumerateInstancesRequestMessage*)msg, name);
5242 break;
5243 }
5244
5245 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
5246 {
5247 _encodeEnumerateInstanceNamesRequest(buf,
5248 (CIMEnumerateInstanceNamesRequestMessage*)msg, name);
5249 break;
5250 }
5251
5252 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
5253 {
5254 _encodeGetInstanceRequest(buf,
5255 (CIMGetInstanceRequestMessage*)msg, name);
5256 break;
5257 }
5258 mike 1.1
5259 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
5260 {
5261 _encodeCreateInstanceRequest(buf,
5262 (CIMCreateInstanceRequestMessage*)msg, name);
5263 break;
5264 }
5265
5266 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
5267 {
5268 _encodeModifyInstanceRequest(buf,
5269 (CIMModifyInstanceRequestMessage*)msg, name);
5270 break;
5271 }
5272
5273 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
5274 {
5275 _encodeDeleteInstanceRequest(buf,
5276 (CIMDeleteInstanceRequestMessage*)msg, name);
5277 break;
5278 }
5279 mike 1.1
5280 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
5281 {
5282 _encodeAssociatorsRequest(buf,
5283 (CIMAssociatorsRequestMessage*)msg, name);
5284 break;
5285 }
5286
5287 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
5288 {
5289 _encodeAssociatorNamesRequest(buf,
5290 (CIMAssociatorNamesRequestMessage*)msg, name);
5291 break;
5292 }
5293
5294 case CIM_REFERENCES_REQUEST_MESSAGE:
5295 {
5296 _encodeReferencesRequest(buf,
5297 (CIMReferencesRequestMessage*)msg, name);
5298 break;
5299 }
5300 mike 1.1
5301 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
5302 {
5303 _encodeReferenceNamesRequest(buf,
5304 (CIMReferenceNamesRequestMessage*)msg, name);
5305 break;
5306 }
5307
5308 case CIM_GET_CLASS_REQUEST_MESSAGE:
5309 {
5310 _encodeGetClassRequest(buf,
5311 (CIMGetClassRequestMessage*)msg, name);
5312 break;
5313 }
5314
5315 case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
5316 {
5317 _encodeEnumerateClassesRequest(buf,
5318 (CIMEnumerateClassesRequestMessage*)msg, name);
5319 break;
5320 }
5321 mike 1.1
5322 case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
5323 {
5324 _encodeEnumerateClassNamesRequest(buf,
5325 (CIMEnumerateClassNamesRequestMessage*)msg, name);
5326 break;
5327 }
5328
5329 case CIM_CREATE_CLASS_REQUEST_MESSAGE:
5330 {
5331 _encodeCreateClassRequest(buf,
5332 (CIMCreateClassRequestMessage*)msg, name);
5333 break;
5334 }
5335
5336 case CIM_DELETE_CLASS_REQUEST_MESSAGE:
5337 {
5338 _encodeDeleteClassRequest(buf,
5339 (CIMDeleteClassRequestMessage*)msg, name);
5340 break;
5341 }
5342 mike 1.1
5343 case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
5344 {
5345 _encodeModifyClassRequest(buf,
5346 (CIMModifyClassRequestMessage*)msg, name);
5347 break;
5348 }
5349
5350 case CIM_SET_QUALIFIER_REQUEST_MESSAGE:
5351 {
5352 _encodeSetQualifierRequest(buf,
5353 (CIMSetQualifierRequestMessage*)msg, name);
5354 break;
5355 }
5356
5357 case CIM_GET_QUALIFIER_REQUEST_MESSAGE:
5358 {
5359 _encodeGetQualifierRequest(buf,
5360 (CIMGetQualifierRequestMessage*)msg, name);
5361 break;
5362 }
5363 mike 1.1
5364 case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:
5365 {
5366 _encodeDeleteQualifierRequest(buf,
5367 (CIMDeleteQualifierRequestMessage*)msg, name);
5368 break;
5369 }
5370
5371 case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:
5372 {
5373 _encodeEnumerateQualifiersRequest(buf,
5374 (CIMEnumerateQualifiersRequestMessage*)msg, name);
5375 break;
5376 }
5377
5378 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
5379 {
5380 _encodeGetPropertyRequest(buf,
5381 (CIMGetPropertyRequestMessage*)msg, name);
5382 break;
5383 }
5384 mike 1.1
5385 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
5386 {
5387 _encodeSetPropertyRequest(buf,
5388 (CIMSetPropertyRequestMessage*)msg, name);
5389 break;
5390 }
5391
5392 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
5393 {
5394 _encodeInvokeMethodRequest(buf,
5395 (CIMInvokeMethodRequestMessage*)msg, name);
5396 break;
5397 }
5398
5399 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
5400 {
5401 _encodeExecQueryRequest(buf,
5402 (CIMExecQueryRequestMessage*)msg, name);
5403 break;
5404 }
|
5405 karl 1.12.2.4
5406 //EXP_PULL_BEGIN
|
5407 karl 1.12.2.1 case CIM_OPEN_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
5408 {
5409 _encodeOpenEnumerateInstancesRequest(buf,
5410 (CIMOpenEnumerateInstancesRequestMessage*)msg, name);
5411 break;
5412 }
5413
5414 case CIM_OPEN_ENUMERATE_INSTANCE_PATHS_REQUEST_MESSAGE:
5415 {
5416 _encodeOpenEnumerateInstancePathsRequest(buf,
5417 (CIMOpenEnumerateInstancePathsRequestMessage*)msg, name);
5418 break;
5419 }
5420 case CIM_OPEN_ASSOCIATOR_INSTANCES_REQUEST_MESSAGE:
5421 {
5422 _encodeOpenAssociatorInstancesRequest(buf,
5423 (CIMOpenAssociatorInstancesRequestMessage*)msg, name);
5424 break;
5425 }
5426 case CIM_OPEN_ASSOCIATOR_INSTANCE_PATHS_REQUEST_MESSAGE:
5427 {
5428 karl 1.12.2.1 _encodeOpenAssociatorInstancePathsRequest(buf,
5429 (CIMOpenAssociatorInstancePathsRequestMessage*)msg, name);
5430 break;
5431 }
5432 case CIM_OPEN_REFERENCE_INSTANCES_REQUEST_MESSAGE:
5433 {
5434 _encodeOpenReferenceInstancesRequest(buf,
5435 (CIMOpenReferenceInstancesRequestMessage*)msg, name);
5436 break;
5437 }
5438 case CIM_OPEN_REFERENCE_INSTANCE_PATHS_REQUEST_MESSAGE:
5439 {
5440 _encodeOpenReferenceInstancePathsRequest(buf,
5441 (CIMOpenReferenceInstancePathsRequestMessage*)msg, name);
5442 break;
5443 }
5444 case CIM_PULL_INSTANCES_WITH_PATH_REQUEST_MESSAGE:
5445 {
5446 _encodePullInstancesWithPathRequest(buf,
5447 (CIMPullInstancesWithPathRequestMessage*)msg, name);
5448 break;
5449 karl 1.12.2.1 }
5450 case CIM_PULL_INSTANCE_PATHS_REQUEST_MESSAGE:
5451 {
5452 _encodePullInstancePathsRequest(buf,
5453 (CIMPullInstancePathsRequestMessage*)msg, name);
5454 break;
5455 }
5456 case CIM_CLOSE_ENUMERATION_REQUEST_MESSAGE:
5457 {
5458 _encodeCloseEnumerationRequest(buf,
5459 (CIMCloseEnumerationRequestMessage*)msg, name);
5460 break;
5461 }
5462 case CIM_ENUMERATION_COUNT_REQUEST_MESSAGE:
5463 {
5464 _encodeEnumerationCountRequest(buf,
5465 (CIMEnumerationCountRequestMessage*)msg, name);
5466 break;
5467 }
|
5468 karl 1.12.2.6 case CIM_OPEN_QUERY_INSTANCES_REQUEST_MESSAGE:
5469 {
5470 _encodeOpenQueryInstancesRequest(buf,
5471 (CIMOpenQueryInstancesRequestMessage*)msg, name);
5472 break;
5473 }
|
5474 karl 1.12.2.4 //EXP_PULL_END
|
5475 mike 1.1
5476 default:
5477 // Unexpected message type
|
5478 karl 1.12.2.5 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
5479 mike 1.1 return false;
5480 }
5481
5482 // [HTTP-HEADERS]
5483 XmlWriter::appendMethodCallHeader(
5484 out,
5485 host,
5486 name,
5487 msg->nameSpace.getString(),
5488 authHeader,
5489 msg->getHttpMethod(),
5490 AcceptLanguageListContainer(msg->operationContext.get(
5491 AcceptLanguageListContainer::NAME)).getLanguages(),
5492 ContentLanguageListContainer(msg->operationContext.get(
5493 ContentLanguageListContainer::NAME)).getLanguages(),
|
5494 kumpf 1.6 buf.size(),
|
5495 mike 1.1 true, /* binaryRequest */
5496 binaryResponse);
5497
|
5498 karl 1.12.2.3 // Need to pad the Buffer to the 64bit border since CIMBuffer is 64bit
5499 // aligned, but Buffer only 8bit
5500 Uint32 extraAlignBytes = CIMBuffer::round(out.size()) - out.size();
5501 for (Uint32 i=0; i < extraAlignBytes;i++)
5502 {
5503 out.append('\0');
5504 }
5505 // Need fix-up Content-length value...
5506 char * contentLengthValueStart =
5507 (char*) strstr(out.getData(), "content-length");
5508 contentLengthValueStart += sizeof("content-length: ")-1;
5509 // using sprintf to stay equal to the macro OUTPUT_CONTENTLENGTH definition
5510 // defined in XMLGenerator.h
5511 char contentLengthP[11];
5512 sprintf(contentLengthP,"%.10u", (unsigned int)buf.size()+extraAlignBytes);
5513 memcpy(contentLengthValueStart,contentLengthP,10);
5514
|
5515 mike 1.1 out.append(buf.getData(), buf.size());
5516
5517 return true;
5518 }
5519
5520 //==============================================================================
5521 //
5522 // BinaryCodec::encodeResponseBody()
5523 //
5524 //==============================================================================
5525
5526 bool BinaryCodec::encodeResponseBody(
5527 Buffer& out,
5528 const CIMResponseMessage* msg,
5529 CIMName& name)
5530 {
5531 CIMBuffer buf;
5532
5533 switch (msg->getType())
5534 {
5535 case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
5536 mike 1.1 {
|
5537 r.kieninger 1.8 _encodeEnumerateInstancesResponseBody(
5538 buf,
5539 ((CIMEnumerateInstancesResponseMessage*)msg)->getResponseData(),
|
5540 karl 1.12.2.3 name,
5541 (msg->getIndex() == 0));
|
5542 mike 1.1 break;
5543 }
5544
5545 case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:
5546 {
|
5547 thilo.boehm 1.10 _encodeEnumerateInstanceNamesResponseBody(
5548 buf,
5549 ((CIMEnumerateInstanceNamesResponseMessage*)msg)->getResponseData(),
5550 name);
|
5551 mike 1.1 break;
5552 }
5553
5554 case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
5555 {
|
5556 r.kieninger 1.8 _encodeGetInstanceResponseBody(
5557 buf,
|
5558 thilo.boehm 1.10 ((CIMGetInstanceResponseMessage*)msg)->getResponseData(),
|
5559 r.kieninger 1.8 name);
|
5560 mike 1.1 break;
5561 }
5562
5563 case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:
5564 {
5565 _encodeCreateInstanceResponseBody(buf,
5566 (CIMCreateInstanceResponseMessage*)msg, name);
5567 break;
5568 }
5569
5570 case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:
5571 {
|
5572 thilo.boehm 1.11 _encodeModifyInstanceResponseBody(name);
|
5573 mike 1.1 break;
5574 }
5575
5576 case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:
5577 {
|
5578 thilo.boehm 1.11 _encodeDeleteInstanceResponseBody(name);
|
5579 mike 1.1 break;
5580 }
5581
5582 case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
5583 {
|
5584 r.kieninger 1.8 _encodeAssociatorsResponseBody(
5585 buf,
|
5586 thilo.boehm 1.10 ((CIMAssociatorsResponseMessage*)msg)->getResponseData(),
|
5587 r.kieninger 1.8 name);
|
5588 mike 1.1 break;
5589 }
5590
5591 case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:
5592 {
|
5593 thilo.boehm 1.10 _encodeAssociatorNamesResponseBody(
5594 buf,
5595 ((CIMAssociatorNamesResponseMessage*)msg)->getResponseData(),
5596 name);
|
5597 mike 1.1 break;
5598 }
5599
5600 case CIM_REFERENCES_RESPONSE_MESSAGE:
5601 {
|
5602 thilo.boehm 1.10 _encodeReferencesResponseBody(
5603 buf,
5604 ((CIMReferencesResponseMessage*)msg)->getResponseData(),
5605 name);
|
5606 mike 1.1 break;
5607 }
5608
5609 case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:
5610 {
|
5611 thilo.boehm 1.10 _encodeReferenceNamesResponseBody(
5612 buf,
5613 ((CIMReferenceNamesResponseMessage*)msg)->getResponseData(),
5614 name);
|
5615 mike 1.1 break;
5616 }
5617
5618 case CIM_GET_CLASS_RESPONSE_MESSAGE:
5619 {
5620 _encodeGetClassResponseBody(buf,
5621 (CIMGetClassResponseMessage*)msg, name);
5622 break;
5623 }
5624
5625 case CIM_ENUMERATE_CLASSES_RESPONSE_MESSAGE:
5626 {
5627 _encodeEnumerateClassesResponseBody(buf,
5628 (CIMEnumerateClassesResponseMessage*)msg, name);
5629 break;
5630 }
5631
5632 case CIM_ENUMERATE_CLASS_NAMES_RESPONSE_MESSAGE:
5633 {
5634 _encodeEnumerateClassNamesResponseBody(buf,
5635 (CIMEnumerateClassNamesResponseMessage*)msg, name);
5636 mike 1.1 break;
5637 }
5638
5639 case CIM_CREATE_CLASS_RESPONSE_MESSAGE:
5640 {
|
5641 thilo.boehm 1.11 _encodeCreateClassResponseBody(name);
|
5642 mike 1.1 break;
5643 }
5644
5645 case CIM_DELETE_CLASS_RESPONSE_MESSAGE:
5646 {
|
5647 thilo.boehm 1.11 _encodeDeleteClassResponseBody(name);
|
5648 mike 1.1 break;
5649 }
5650
5651 case CIM_MODIFY_CLASS_RESPONSE_MESSAGE:
5652 {
|
5653 thilo.boehm 1.11 _encodeModifyClassResponseBody(name);
|
5654 mike 1.1 break;
5655 }
5656
5657 case CIM_SET_QUALIFIER_RESPONSE_MESSAGE:
5658 {
|
5659 thilo.boehm 1.11 _encodeSetQualifierResponseBody(name);
|
5660 mike 1.1 break;
5661 }
5662
5663 case CIM_GET_QUALIFIER_RESPONSE_MESSAGE:
5664 {
5665 _encodeGetQualifierResponseBody(buf,
5666 (CIMGetQualifierResponseMessage*)msg, name);
5667 break;
5668 }
5669
5670 case CIM_DELETE_QUALIFIER_RESPONSE_MESSAGE:
5671 {
|
5672 thilo.boehm 1.11 _encodeDeleteQualifierResponseBody(name);
|
5673 mike 1.1 break;
5674 }
5675
5676 case CIM_ENUMERATE_QUALIFIERS_RESPONSE_MESSAGE:
5677 {
5678 _encodeEnumerateQualifiersResponseBody(buf,
5679 (CIMEnumerateQualifiersResponseMessage*)msg, name);
5680 break;
5681 }
5682
5683 case CIM_GET_PROPERTY_RESPONSE_MESSAGE:
5684 {
5685 _encodeGetPropertyResponseBody(buf,
5686 (CIMGetPropertyResponseMessage*)msg, name);
5687 break;
5688 }
5689
5690 case CIM_SET_PROPERTY_RESPONSE_MESSAGE:
5691 {
|
5692 thilo.boehm 1.11 _encodeSetPropertyResponseBody(name);
|
5693 mike 1.1 break;
5694 }
5695
5696 case CIM_INVOKE_METHOD_RESPONSE_MESSAGE:
5697 {
5698 _encodeInvokeMethodResponseBody(buf,
5699 (CIMInvokeMethodResponseMessage*)msg, name);
5700 break;
5701 }
5702
5703 case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
5704 {
|
5705 karl 1.12.2.4 _encodeExecQueryResponseBody(
5706 buf,
|
5707 thilo.boehm 1.10 ((CIMExecQueryResponseMessage*)msg)->getResponseData(),
|
5708 r.kieninger 1.8 name);
|
5709 mike 1.1 break;
5710 }
5711
|
5712 karl 1.12.2.4 //EXP_PULL_BEGIN
|
5713 karl 1.12.2.1 case CIM_OPEN_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
5714 {
5715 _encodeOpenEnumerateInstancesResponseBody(buf,
5716 (CIMOpenEnumerateInstancesResponseMessage*)msg,
5717 ((CIMOpenEnumerateInstancesResponseMessage*)msg)->
5718 getResponseData(),
5719 name);
5720 break;
5721 }
5722
5723 case CIM_OPEN_ENUMERATE_INSTANCE_PATHS_RESPONSE_MESSAGE:
5724 {
5725 _encodeOpenEnumerateInstancePathsResponseBody(buf,
5726 (CIMOpenEnumerateInstancePathsResponseMessage*)msg,
5727 ((CIMOpenEnumerateInstancePathsResponseMessage*)msg)->
5728 getResponseData(),
5729 name);
5730 break;
5731 }
5732
5733 case CIM_OPEN_REFERENCE_INSTANCES_RESPONSE_MESSAGE:
5734 karl 1.12.2.1 {
5735 _encodeOpenReferenceInstancesResponseBody(buf,
5736 (CIMOpenReferenceInstancesResponseMessage*)msg,
5737 ((CIMOpenReferenceInstancesResponseMessage*)msg)->
5738 getResponseData(),
5739 name);
5740 break;
5741 }
5742
5743 case CIM_OPEN_REFERENCE_INSTANCE_PATHS_RESPONSE_MESSAGE:
5744 {
5745 _encodeOpenReferenceInstancePathsResponseBody(buf,
5746 (CIMOpenReferenceInstancePathsResponseMessage*)msg,
5747 ((CIMOpenReferenceInstancePathsResponseMessage*)msg)->
5748 getResponseData(),
5749 name);
5750 break;
5751 }
5752 case CIM_OPEN_ASSOCIATOR_INSTANCES_RESPONSE_MESSAGE:
5753 {
5754 _encodeOpenAssociatorInstancesResponseBody(buf,
5755 karl 1.12.2.1 (CIMOpenAssociatorInstancesResponseMessage*)msg,
5756 ((CIMOpenAssociatorInstancesResponseMessage*)msg)->
5757 getResponseData(),
5758 name);
5759 break;
5760 }
5761
5762 case CIM_OPEN_ASSOCIATOR_INSTANCE_PATHS_RESPONSE_MESSAGE:
5763 {
5764 _encodeOpenAssociatorInstancePathsResponseBody(buf,
5765 (CIMOpenAssociatorInstancePathsResponseMessage*)msg,
5766 ((CIMOpenAssociatorInstancePathsResponseMessage*)msg)->
5767 getResponseData(),
5768 name);
5769 break;
5770 }
5771
5772 case CIM_PULL_INSTANCES_WITH_PATH_RESPONSE_MESSAGE:
5773 {
5774 _encodePullInstancesWithPathResponseBody(buf,
5775 (CIMPullInstancesWithPathResponseMessage*)msg,
5776 karl 1.12.2.1 ((CIMPullInstancesWithPathResponseMessage*)msg)->
5777 getResponseData(),
5778 name);
5779 break;
5780 }
5781
5782 case CIM_PULL_INSTANCE_PATHS_RESPONSE_MESSAGE:
5783 {
5784 _encodePullInstancePathsResponseBody(buf,
5785 (CIMPullInstancePathsResponseMessage*)msg,
5786 ((CIMPullInstancePathsResponseMessage*)msg)->
5787 getResponseData(),
5788 name);
5789 break;
5790 }
5791 case CIM_CLOSE_ENUMERATION_RESPONSE_MESSAGE:
5792 {
5793 _encodeCloseEnumerationResponseBody(buf,
5794 (CIMCloseEnumerationResponseMessage*)msg,
5795 name);
5796 break;
5797 karl 1.12.2.1 }
5798 case CIM_ENUMERATION_COUNT_RESPONSE_MESSAGE:
5799 {
5800 _encodeEnumerationCountResponseBody(buf,
5801 (CIMEnumerationCountResponseMessage*)msg,
5802 name);
5803 break;
5804 }
|
5805 karl 1.12.2.4 //EXP_PULL_END
|
5806 karl 1.12.2.1
|
5807 mike 1.1 default:
5808 // Unexpected message type
|
5809 karl 1.12.2.5 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
5810 mike 1.1 return false;
5811 }
5812
5813 out.append(buf.getData(), buf.size());
5814 return true;
5815 }
5816
5817 PEGASUS_NAMESPACE_END
|