1 martin 1.4 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.5 //
|
3 martin 1.4 // 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.5 //
|
10 martin 1.4 // 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.5 //
|
17 martin 1.4 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.5 //
|
20 martin 1.4 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.5 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.4 // 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.5 //
|
28 martin 1.4 //////////////////////////////////////////////////////////////////////////
|
29 mike 1.1 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #include <Pegasus/Common/XmlReader.h>
33 #include <Pegasus/Common/OperationContextInternal.h>
34 #include <Pegasus/Common/System.h>
35
36 #include "CIMBinMsgDeserializer.h"
37
38 PEGASUS_NAMESPACE_BEGIN
39
40 CIMMessage* CIMBinMsgDeserializer::deserialize(
41 CIMBuffer& in,
42 size_t size)
43 {
44 if (size == 0)
45 return 0;
46
47 CIMMessage* msg = 0;
48 String typeString;
49 OperationContext operationContext;
50 mike 1.1 bool present;
51
52 // [messageId]
53
54 String messageID;
55
56 if (!in.getString(messageID))
57 return 0;
58
|
59 mike 1.3 // [binaryRequest]
60
61 Boolean binaryRequest;
62
63 if (!in.getBoolean(binaryRequest))
64 return 0;
65
66 // [binaryResponse]
67
68 Boolean binaryResponse;
69
70 if (!in.getBoolean(binaryResponse))
71 return 0;
72
|
73 mike 1.1 // [type]
74
75 MessageType type;
76 {
77 Uint32 tmp;
78
79 if (!in.getUint32(tmp))
80 return 0;
81
82 type = MessageType(tmp);
83 }
84
85 #ifndef PEGASUS_DISABLE_PERFINST
86
87 // [serverStartTimeMicroseconds]
88 Uint64 serverStartTimeMicroseconds;
|
89 kumpf 1.6
|
90 mike 1.1 if (!in.getUint64(serverStartTimeMicroseconds))
|
91 karl 1.11.2.3 return 0;
|
92 mike 1.1
93 // [providerTimeMicroseconds]
94 Uint64 providerTimeMicroseconds;
95
96 if (!in.getUint64(providerTimeMicroseconds))
|
97 karl 1.11.2.3 return 0;
|
98 mike 1.1
99 #endif
100
101 // [isComplete]
102
103 Boolean isComplete;
104
105 if (!in.getBoolean(isComplete))
|
106 karl 1.11.2.3 return 0;
|
107 mike 1.1
108 // [index]
109
110 Uint32 index;
111
112 if (!in.getUint32(index))
|
113 karl 1.11.2.3 return 0;
|
114 mike 1.1
115 // [operationContext]
116
117 if (!_getOperationContext(in, operationContext))
118 return 0;
119
120 // [CIMRequestMessage]
121
122 if (!in.getPresent(present))
123 return 0;
124
125 if (present)
126 {
127 if (!(msg = _getRequestMessage(in, type)))
128 return 0;
129 }
130
131 // [CIMResponseMessage]
132
133 if (!in.getPresent(present))
134 return 0;
135 mike 1.1
136 if (present)
137 {
|
138 mike 1.3 if (!(msg = _getResponseMessage(in, type, binaryResponse)))
|
139 mike 1.1 return 0;
140 }
141
142 // Initialize the messge:
143
144 msg->messageId = messageID;
|
145 mike 1.3 msg->binaryRequest = binaryRequest;
146 msg->binaryResponse = binaryResponse;
|
147 mike 1.1 #ifndef PEGASUS_DISABLE_PERFINST
148 msg->setServerStartTime(serverStartTimeMicroseconds);
149 msg->setProviderTime(providerTimeMicroseconds);
150 #endif
151 msg->setComplete(isComplete);
152 msg->setIndex(index);
153 msg->operationContext = operationContext;
154
155 return msg;
156 }
157
158 CIMRequestMessage* CIMBinMsgDeserializer::_getRequestMessage(
159 CIMBuffer& in,
160 MessageType type)
161 {
162 CIMRequestMessage* msg = 0;
163 XmlEntry entry;
164 QueueIdStack queueIdStack;
165 Boolean present;
166
167 // [queueIdStack]
168 mike 1.1
169 _getQueueIdStack(in, queueIdStack);
170
171 // [CIMOperationRequestMessage]
172
173 if (!in.getPresent(present))
174 return 0;
175
176 if (present)
177 {
178 // [userInfo]
179
180 String authType;
181 String userName;
182
183 if (!_getUserInfo(in, authType, userName))
184 return 0;
185
186 // [nameSpace]
187
188 CIMNamespaceName nameSpace;
189 mike 1.1
190 if (!_getNamespaceName(in, nameSpace))
191 return 0;
192
193 // [className]
194
195 CIMName className;
196
197 if (!_getName(in, className))
198 return 0;
199
200 // [providerType]
201
202 Uint32 providerType;
203
204 if (!in.getUint32(providerType))
205 return 0;
206
207 // [message]
208
209 CIMOperationRequestMessage* oreq = 0;
210 mike 1.1
211 switch (type)
212 {
213 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
214 oreq = _getGetInstanceRequestMessage(in);
215 break;
216 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
217 oreq = _getDeleteInstanceRequestMessage(in);
218 break;
219 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
220 oreq = _getCreateInstanceRequestMessage(in);
221 break;
222 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
223 oreq = _getModifyInstanceRequestMessage(in);
224 break;
225 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
226 oreq = _getEnumerateInstancesRequestMessage(in);
227 break;
228 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
|
229 karl 1.11.2.3 oreq = _getEnumerateInstanceNamesRequestMessage();
|
230 mike 1.1 break;
231 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
232 oreq = _getExecQueryRequestMessage(in);
233 break;
234 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
235 oreq = _getGetPropertyRequestMessage(in);
236 break;
237 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
238 oreq = _getSetPropertyRequestMessage(in);
239 break;
240 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
241 oreq = _getAssociatorsRequestMessage(in);
242 break;
243 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
244 oreq = _getAssociatorNamesRequestMessage(in);
245 break;
246 case CIM_REFERENCES_REQUEST_MESSAGE:
247 oreq = _getReferencesRequestMessage(in);
248 break;
249 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
250 oreq = _getReferenceNamesRequestMessage(in);
251 mike 1.1 break;
252 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
253 oreq = _getInvokeMethodRequestMessage(in);
254 break;
255 default:
|
256 karl 1.11.2.3 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
257 mike 1.1 break;
258 }
259
260 if (!oreq)
261 return 0;
262
263 oreq->authType = authType;
264 oreq->userName = userName;
265 oreq->nameSpace = nameSpace;
266 oreq->className = className;
267 oreq->providerType = providerType;
268 msg = oreq;
269 }
270
271 // [CIMIndicationRequestMessage]
272
273 if (!in.getPresent(present))
274 return 0;
275
276 if (present)
277 {
278 mike 1.1 // [userInfo]
279
280 String authType;
281 String userName;
282
283 if (!_getUserInfo(in, authType, userName))
284 {
285 }
286
287 // [message]
288
289 CIMIndicationRequestMessage* ireq = 0;
290
291 switch (type)
292 {
293 case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
294 ireq = _getCreateSubscriptionRequestMessage(in);
295 break;
296 case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:
297 ireq = _getModifySubscriptionRequestMessage(in);
298 break;
299 mike 1.1 case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:
300 ireq = _getDeleteSubscriptionRequestMessage(in);
301 break;
302 default:
|
303 karl 1.11.2.3 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
304 mike 1.1 break;
305 }
306
307 if (!ireq)
308 return 0;
309
310 // Initialize the message:
311
312 ireq->authType = authType;
313 ireq->userName = userName;
314 msg = ireq;
315 }
316
317 // [other]
318
319 if (!in.getPresent(present))
320 return 0;
321
322 if (present)
323 {
324 switch (type)
325 mike 1.1 {
326 case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
327 msg = _getExportIndicationRequestMessage(in);
328 break;
329 case CIM_PROCESS_INDICATION_REQUEST_MESSAGE:
330 msg = _getProcessIndicationRequestMessage(in);
331 break;
332 case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
333 msg = _getDisableModuleRequestMessage(in);
334 break;
335 case CIM_ENABLE_MODULE_REQUEST_MESSAGE:
336 msg = _getEnableModuleRequestMessage(in);
337 break;
338 case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:
339 msg = _getStopAllProvidersRequestMessage(in);
340 break;
341 case CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE:
342 msg =
343 _getInitializeProviderAgentRequestMessage(in);
344 break;
345 case CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE:
346 mike 1.1 msg = _getNotifyConfigChangeRequestMessage(in);
347 break;
348 case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:
|
349 karl 1.11.2.3 msg = _getSubscriptionInitCompleteRequestMessage();
|
350 mike 1.1 break;
|
351 venkat.puvvada 1.8 case CIM_INDICATION_SERVICE_DISABLED_REQUEST_MESSAGE:
|
352 karl 1.11.2.3 msg = _getIndicationServiceDisabledRequestMessage();
|
353 venkat.puvvada 1.8 break;
|
354 thilo.boehm 1.10 case PROVAGT_GET_SCMOCLASS_REQUEST_MESSAGE:
355 msg = _getProvAgtGetScmoClassRequestMessage(in);
356 break;
357
|
358 venkat.puvvada 1.8
|
359 mike 1.1 default:
|
360 karl 1.11.2.3 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
361 mike 1.1 break;
362 }
363
364 if (!msg)
365 return 0;
366 }
367
368 msg->queueIds = queueIdStack;
369
370 return msg;
371 }
372
373 CIMResponseMessage* CIMBinMsgDeserializer::_getResponseMessage(
374 CIMBuffer& in,
|
375 mike 1.3 MessageType type,
376 bool binaryResponse)
|
377 mike 1.1 {
378 CIMResponseMessage* msg = 0;
379 QueueIdStack queueIdStack;
380 CIMException cimException;
381
382 // [queueIdStack]
383
384 if (!_getQueueIdStack(in, queueIdStack))
385 return 0;
386
387 // [cimException]
388 if (!_getException(in, cimException))
389 return 0;
390
391 // [message]
392
393 switch (type)
394 {
395 case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
|
396 mike 1.3 msg = _getGetInstanceResponseMessage(in, binaryResponse);
|
397 mike 1.1 break;
398 case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:
|
399 karl 1.11.2.3 msg = _getDeleteInstanceResponseMessage();
|
400 mike 1.1 break;
401 case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:
402 msg = _getCreateInstanceResponseMessage(in);
403 break;
404 case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:
|
405 karl 1.11.2.3 msg = _getModifyInstanceResponseMessage();
|
406 mike 1.1 break;
407 case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
|
408 mike 1.3 msg = _getEnumerateInstancesResponseMessage(in, binaryResponse);
|
409 mike 1.1 break;
410 case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:
411 msg = _getEnumerateInstanceNamesResponseMessage(in);
412 break;
413 case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
|
414 r.kieninger 1.9 msg = _getExecQueryResponseMessage(in, binaryResponse);
|
415 mike 1.1 break;
416 case CIM_GET_PROPERTY_RESPONSE_MESSAGE:
417 msg = _getGetPropertyResponseMessage(in);
418 break;
419 case CIM_SET_PROPERTY_RESPONSE_MESSAGE:
|
420 karl 1.11.2.3 msg = _getSetPropertyResponseMessage();
|
421 mike 1.1 break;
422 case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
|
423 r.kieninger 1.9 msg = _getAssociatorsResponseMessage(in, binaryResponse);
|
424 mike 1.1 break;
425 case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:
426 msg = _getAssociatorNamesResponseMessage(in);
427 break;
428 case CIM_REFERENCES_RESPONSE_MESSAGE:
|
429 karl 1.11.2.1 msg = _getReferencesResponseMessage(in, binaryResponse);
|
430 mike 1.1 break;
431 case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:
432 msg = _getReferenceNamesResponseMessage(in);
433 break;
434 case CIM_INVOKE_METHOD_RESPONSE_MESSAGE:
435 msg = _getInvokeMethodResponseMessage(in);
436 break;
437 case CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE:
|
438 karl 1.11.2.3 msg = _getCreateSubscriptionResponseMessage();
|
439 mike 1.1 break;
440 case CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE:
|
441 karl 1.11.2.3 msg = _getModifySubscriptionResponseMessage();
|
442 mike 1.1 break;
443 case CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE:
|
444 karl 1.11.2.3 msg = _getDeleteSubscriptionResponseMessage();
|
445 mike 1.1 break;
446 case CIM_EXPORT_INDICATION_RESPONSE_MESSAGE:
|
447 karl 1.11.2.3 msg = _getExportIndicationResponseMessage();
|
448 mike 1.1 break;
449 case CIM_PROCESS_INDICATION_RESPONSE_MESSAGE:
|
450 karl 1.11.2.3 msg = _getProcessIndicationResponseMessage();
|
451 mike 1.1 break;
452 case CIM_DISABLE_MODULE_RESPONSE_MESSAGE:
453 msg = _getDisableModuleResponseMessage(in);
454 break;
455 case CIM_ENABLE_MODULE_RESPONSE_MESSAGE:
456 msg = _getEnableModuleResponseMessage(in);
457 break;
458 case CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE:
|
459 karl 1.11.2.3 msg = _getStopAllProvidersResponseMessage();
|
460 mike 1.1 break;
461 case CIM_INITIALIZE_PROVIDER_AGENT_RESPONSE_MESSAGE:
462 msg =
|
463 karl 1.11.2.3 _getInitializeProviderAgentResponseMessage();
|
464 mike 1.1 break;
465 case CIM_NOTIFY_CONFIG_CHANGE_RESPONSE_MESSAGE:
|
466 karl 1.11.2.3 msg = _getNotifyConfigChangeResponseMessage();
|
467 mike 1.1 break;
468 case CIM_SUBSCRIPTION_INIT_COMPLETE_RESPONSE_MESSAGE:
|
469 karl 1.11.2.3 msg = _getSubscriptionInitCompleteResponseMessage();
|
470 mike 1.1 break;
|
471 venkat.puvvada 1.8 case CIM_INDICATION_SERVICE_DISABLED_RESPONSE_MESSAGE:
|
472 karl 1.11.2.3 msg = _getIndicationServiceDisabledResponseMessage();
|
473 venkat.puvvada 1.8 break;
|
474 thilo.boehm 1.10 case PROVAGT_GET_SCMOCLASS_RESPONSE_MESSAGE:
475 msg = _getProvAgtGetScmoClassResponseMessage(in);
476 break;
|
477 venkat.puvvada 1.8
|
478 mike 1.1 default:
|
479 karl 1.11.2.3 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
480 mike 1.1 break;
481 }
482
483 if (!msg)
484 return 0;
485
486 msg->queueIds = queueIdStack;
487 msg->cimException = cimException;
488
489 return msg;
490 }
491
492 Boolean CIMBinMsgDeserializer::_getUserInfo(
493 CIMBuffer& in,
494 String& authType,
495 String& userName)
496 {
497 if (!in.getString(authType))
498 return false;
499
500 if (!in.getString(userName))
501 mike 1.1 return false;
502
503 return true;
504 }
505
506 Boolean CIMBinMsgDeserializer::_getQueueIdStack(
507 CIMBuffer& in,
508 QueueIdStack& queueIdStack)
509 {
510 Uint32 size;
511
512 if (!in.getUint32(size))
513 return false;
514
515 for (Uint32 i = 0; i < size; i++)
516 {
517 Uint32 tmp;
518
519 if (!in.getUint32(tmp))
520 return false;
521
522 mike 1.1 queueIdStack.push(tmp);
523 }
524
525 return true;
526 }
527
528 Boolean CIMBinMsgDeserializer::_getOperationContext(
529 CIMBuffer& in,
530 OperationContext& operationContext)
531 {
532 operationContext.clear();
533
534 XmlEntry entry;
535 bool present;
536
537 // [IdentityContainer]
538
539 if (!in.getPresent(present))
540 return false;
541
542 if (present)
543 mike 1.1 {
544 String userName;
545
546 if (!in.getString(userName))
547 return false;
548
549 operationContext.insert(IdentityContainer(userName));
550 }
551
552 // [SubscriptionInstanceContainer]
553
554 if (!in.getPresent(present))
555 return false;
556
557 if (present)
558 {
559 CIMInstance ci;
560
561 if (!_getInstance(in, ci))
562 return false;
563
564 mike 1.1 operationContext.insert(SubscriptionInstanceContainer(ci));
565 }
566
567 // [SubscriptionFilterConditionContainer]
568
569 if (!in.getPresent(present))
570 return false;
571
572 if (present)
573 {
574 String filterCondition;
575 String queryLanguage;
576
577 if (!in.getString(filterCondition) || !in.getString(queryLanguage))
578 return false;
579
580 operationContext.insert(SubscriptionFilterConditionContainer(
581 filterCondition, queryLanguage));
582 }
583
584 // [SubscriptionFilterQueryContainer]
585 mike 1.1
586 if (!in.getPresent(present))
587 return false;
588
589 if (present)
590 {
591 String filterQuery;
592 String queryLanguage;
593 CIMNamespaceName nameSpace;
594
595 if (!in.getString(filterQuery) || !in.getString(queryLanguage))
596 return false;
597
598 if (!_getNamespaceName(in, nameSpace))
599 return false;
600
601 operationContext.insert(SubscriptionFilterQueryContainer(
602 filterQuery, queryLanguage, nameSpace));
603 }
604
605 // [SubscriptionInstanceNamesContainer]
606 mike 1.1
607 if (!in.getPresent(present))
608 return false;
609
610 if (present)
611 {
612 Array<CIMObjectPath> cops;
613
614 if (!in.getObjectPathA(cops))
615 return false;
616
617 operationContext.insert(SubscriptionInstanceNamesContainer(cops));
618 }
619
620 // [TimeoutContainer]
621
622 if (!in.getPresent(present))
623 return false;
624
625 if (present)
626 {
627 mike 1.1 Uint32 timeout;
628
629 if (!in.getUint32(timeout))
630 return false;
631
632 operationContext.insert(TimeoutContainer(timeout));
633 }
634
635 // [AcceptLanguageListContainer]
636
637 if (!in.getPresent(present))
638 return false;
639
640 if (present)
641 {
642 AcceptLanguageList acceptLanguages;
643
644 if (!_getAcceptLanguageList(in, acceptLanguages))
645 return false;
646
647 operationContext.insert(AcceptLanguageListContainer(acceptLanguages));
648 mike 1.1 }
649
650 // [ContentLanguageListContainer]
651
652 if (!in.getPresent(present))
653 return false;
654
655 if (present)
656 {
657 ContentLanguageList list;
658
659 if (!_getContentLanguageList(in, list))
660 return false;
661
662 operationContext.insert(ContentLanguageListContainer(list));
663 }
664
665 // [SnmpTrapOidContainer]
666
667 if (!in.getPresent(present))
668 return false;
669 mike 1.1
670 if (present)
671 {
672 String snmpTrapOid;
673
674 if (!in.getString(snmpTrapOid))
675 return false;
676
677 operationContext.insert(SnmpTrapOidContainer(snmpTrapOid));
678 }
679
680 // [LocaleContainer]
681
682 if (!in.getPresent(present))
683 return false;
684
685 if (present)
686 {
687 String languageId;
688
689 if (!in.getString(languageId))
690 mike 1.1 return false;
691
692 operationContext.insert(LocaleContainer(languageId));
693 }
694
695 // [ProviderIdContainer]
696
697 if (!in.getPresent(present))
698 return false;
699
700 if (present)
701 {
702 CIMInstance module;
703 CIMInstance provider;
704 Boolean isRemoteNameSpace;
705 String remoteInfo;
706 String provMgrPath;
707
708 if (!_getInstance(in, module))
709 return false;
710
711 mike 1.1 if (!_getInstance(in, provider))
712 return false;
713
714 if (!in.getBoolean(isRemoteNameSpace))
715 return false;
716
717 if (!in.getString(remoteInfo))
718 return false;
719
720 if (!in.getString(provMgrPath))
721 return false;
722
723 ProviderIdContainer pidc(
724 module, provider, isRemoteNameSpace, remoteInfo);
725
726 pidc.setProvMgrPath(provMgrPath);
727
728 operationContext.insert(pidc);
729 }
730
731 // [CachedClassDefinitionContainer]
732 mike 1.1
733 if (!in.getPresent(present))
734 return false;
735
736 if (present)
737 {
738 CIMClass cc;
739
740 if (!in.getClass(cc))
741 return false;
742
743 operationContext.insert(CachedClassDefinitionContainer(cc));
744 }
745
746 return true;
747 }
748
749 Boolean CIMBinMsgDeserializer::_getContentLanguageList(
750 CIMBuffer& in,
751 ContentLanguageList& contentLanguages)
752 {
753 mike 1.1 contentLanguages.clear();
754
755 Uint32 size;
756
757 if (!in.getUint32(size))
758 return false;
759
760 for (Uint32 i = 0; i < size; i++)
761 {
762 String tmp;
763
764 if (!in.getString(tmp))
765 return false;
766
767 contentLanguages.append(LanguageTag(tmp));
768 }
769
770 return true;
771 }
772
773 Boolean CIMBinMsgDeserializer::_getAcceptLanguageList(
774 mike 1.1 CIMBuffer& in,
775 AcceptLanguageList& acceptLanguages)
776 {
777 acceptLanguages.clear();
778
779 Uint32 size;
780
781 if (!in.getUint32(size))
782 return false;
783
784 for (Uint32 i = 0; i < size; i++)
785 {
786 String languageTag;
787 Real32 qualityValue;
788
789 if (!in.getString(languageTag) || !in.getReal32(qualityValue))
790 return false;
791
792 acceptLanguages.insert(LanguageTag(languageTag), qualityValue);
793 }
794
795 mike 1.1 return true;
796 }
797
798 Boolean CIMBinMsgDeserializer::_getException(
799 CIMBuffer& in,
800 CIMException& cimException)
801 {
802 Uint32 statusCode;
803 String message;
804 String cimMessage;
805 String file;
806 Uint32 line;
807 ContentLanguageList contentLanguages;
808
809 if (!in.getUint32(statusCode))
810 return false;
811
812 if (!in.getString(message))
813 return false;
814
815 if (!in.getString(cimMessage))
816 mike 1.1 return false;
817
818 if (!in.getString(file))
819 return false;
820
821 if (!in.getUint32(line))
822 return false;
823
824 if (!_getContentLanguageList(in, contentLanguages))
825 return false;
826
827 TraceableCIMException e = TraceableCIMException(contentLanguages,
828 CIMStatusCode(statusCode), message, file, line);
829 e.setCIMMessage(cimMessage);
830 cimException = e;
831
832 return true;
833 }
834
835 Boolean CIMBinMsgDeserializer::_getPropertyList(
836 CIMBuffer& in,
837 mike 1.1 CIMPropertyList& propertyList)
838 {
839 return in.getPropertyList(propertyList);
840 }
841
842 Boolean CIMBinMsgDeserializer::_getObjectPath(
843 CIMBuffer& in,
844 CIMObjectPath& cop)
845 {
846 return in.getObjectPath(cop);
847 }
848
849 Boolean CIMBinMsgDeserializer::_getInstance(
850 CIMBuffer& in,
851 CIMInstance& ci)
852 {
853 return in.getInstance(ci);
854 }
855
856 Boolean CIMBinMsgDeserializer::_getNamespaceName(
857 CIMBuffer& in,
858 mike 1.1 CIMNamespaceName& cimNamespaceName)
859 {
|
860 kumpf 1.2 return in.getNamespaceName(cimNamespaceName);
|
861 mike 1.1 }
862
863 Boolean CIMBinMsgDeserializer::_getName(
864 CIMBuffer& in,
865 CIMName& cn)
866 {
867 return in.getName(cn);
868 }
869
870 Boolean CIMBinMsgDeserializer::_getObject(
871 CIMBuffer& in,
872 CIMObject& object)
873 {
874 return in.getObject(object);
875 }
876
877 Boolean CIMBinMsgDeserializer::_getParamValue(
878 CIMBuffer& in,
879 CIMParamValue& pv)
880 {
881 return in.getParamValue(pv);
882 mike 1.1 }
883
884 CIMGetInstanceRequestMessage*
885 CIMBinMsgDeserializer::_getGetInstanceRequestMessage(CIMBuffer& in)
886 {
887 CIMObjectPath instanceName;
888 Boolean includeQualifiers;
889 Boolean includeClassOrigin;
890 CIMPropertyList propertyList;
891
892 if (!in.getObjectPath(instanceName))
893 return 0;
894
895 if (!in.getBoolean(includeQualifiers))
896 return 0;
897
898 if (!in.getBoolean(includeClassOrigin))
899 return 0;
900
901 if (!in.getPropertyList(propertyList))
902 return 0;
903 mike 1.1
904 return new CIMGetInstanceRequestMessage(
905 String::EMPTY,
906 CIMNamespaceName(),
907 instanceName,
908 includeQualifiers,
909 includeClassOrigin,
910 propertyList,
911 QueueIdStack());
912 }
913
914 CIMDeleteInstanceRequestMessage*
915 CIMBinMsgDeserializer::_getDeleteInstanceRequestMessage(
916 CIMBuffer& in)
917 {
918 CIMObjectPath instanceName;
919
920 if (!_getObjectPath(in, instanceName))
921 return 0;
922
923 return new CIMDeleteInstanceRequestMessage(
924 mike 1.1 String::EMPTY,
925 CIMNamespaceName(),
926 instanceName,
927 QueueIdStack());
928 }
929
930 CIMCreateInstanceRequestMessage*
931 CIMBinMsgDeserializer::_getCreateInstanceRequestMessage(
932 CIMBuffer& in)
933 {
934 CIMInstance newInstance;
935
936 if (!_getInstance(in, newInstance))
937 return 0;
938
939 return new CIMCreateInstanceRequestMessage(
|
940 kumpf 1.6 String::EMPTY,
941 CIMNamespaceName(),
942 newInstance,
|
943 mike 1.1 QueueIdStack());
944 }
945
946 CIMModifyInstanceRequestMessage*
947 CIMBinMsgDeserializer::_getModifyInstanceRequestMessage(
948 CIMBuffer& in)
949 {
950 CIMInstance modifiedInstance;
951 Boolean includeQualifiers;
952 CIMPropertyList propertyList;
953
954 if (!_getInstance(in, modifiedInstance))
|
955 karl 1.11.2.3 return 0;
|
956 mike 1.1
957 if (!in.getBoolean(includeQualifiers))
|
958 karl 1.11.2.3 return 0;
|
959 mike 1.1
960 if (!_getPropertyList(in, propertyList))
|
961 karl 1.11.2.3 return 0;
|
962 mike 1.1
963 return new CIMModifyInstanceRequestMessage(
964 String::EMPTY,
965 CIMNamespaceName(),
966 modifiedInstance,
967 includeQualifiers,
968 propertyList,
969 QueueIdStack());
970 }
971
972 CIMEnumerateInstancesRequestMessage*
973 CIMBinMsgDeserializer::_getEnumerateInstancesRequestMessage(
974 CIMBuffer& in)
975 {
976 CIMObjectPath instanceName;
977 Boolean deepInheritance;
978 Boolean includeQualifiers;
979 Boolean includeClassOrigin;
980 CIMPropertyList propertyList;
981
982 if (!in.getBoolean(deepInheritance))
|
983 karl 1.11.2.3 return 0;
|
984 mike 1.1
985 if (!in.getBoolean(includeQualifiers))
|
986 karl 1.11.2.3 return 0;
|
987 mike 1.1
988 if (!in.getBoolean(includeClassOrigin))
|
989 karl 1.11.2.3 return 0;
|
990 mike 1.1
991 if (!_getPropertyList(in, propertyList))
|
992 karl 1.11.2.3 return 0;
|
993 mike 1.1
994 return new CIMEnumerateInstancesRequestMessage(
|
995 kumpf 1.6 String::EMPTY,
996 CIMNamespaceName(),
|
997 mike 1.1 CIMName(),
998 deepInheritance,
999 includeQualifiers,
1000 includeClassOrigin,
1001 propertyList,
1002 QueueIdStack());
1003 }
1004
1005 CIMEnumerateInstanceNamesRequestMessage*
|
1006 karl 1.11.2.3 CIMBinMsgDeserializer::_getEnumerateInstanceNamesRequestMessage()
|
1007 mike 1.1 {
1008 return new CIMEnumerateInstanceNamesRequestMessage(
|
1009 kumpf 1.6 String::EMPTY,
1010 CIMNamespaceName(),
1011 CIMName(),
|
1012 mike 1.1 QueueIdStack());
1013 }
1014
1015 CIMExecQueryRequestMessage*
1016 CIMBinMsgDeserializer::_getExecQueryRequestMessage(
1017 CIMBuffer& in)
1018 {
1019 String queryLanguage;
1020 String query;
1021
1022 if (!in.getString(queryLanguage) || !in.getString(query))
|
1023 karl 1.11.2.3 return 0;
|
1024 mike 1.1
1025 return new CIMExecQueryRequestMessage(
|
1026 kumpf 1.6 String::EMPTY,
|
1027 mike 1.1 CIMNamespaceName(),
|
1028 kumpf 1.6 queryLanguage,
1029 query,
|
1030 mike 1.1 QueueIdStack());
1031 }
1032
1033 CIMAssociatorsRequestMessage*
1034 CIMBinMsgDeserializer::_getAssociatorsRequestMessage(
1035 CIMBuffer& in)
1036 {
1037 CIMObjectPath objectName;
1038 CIMName assocClass;
1039 CIMName resultClass;
1040 String role;
1041 String resultRole;
1042 Boolean includeQualifiers;
1043 Boolean includeClassOrigin;
1044 CIMPropertyList propertyList;
1045
1046 if (!_getObjectPath(in, objectName))
|
1047 karl 1.11.2.3 return 0;
|
1048 mike 1.1
1049 if (!_getName(in, assocClass))
|
1050 karl 1.11.2.3 return 0;
|
1051 mike 1.1
1052 if (!_getName(in, resultClass))
|
1053 karl 1.11.2.3 return 0;
|
1054 mike 1.1
1055 if (!in.getString(role))
|
1056 karl 1.11.2.3 return 0;
|
1057 mike 1.1
1058 if (!in.getString(resultRole))
|
1059 karl 1.11.2.3 return 0;
|
1060 mike 1.1
1061 if (!in.getBoolean(includeQualifiers))
|
1062 karl 1.11.2.3 return 0;
|
1063 mike 1.1
1064 if (!in.getBoolean(includeClassOrigin))
|
1065 karl 1.11.2.3 return 0;
|
1066 mike 1.1
1067 if (!_getPropertyList(in, propertyList))
|
1068 karl 1.11.2.3 return 0;
|
1069 mike 1.1
1070 return new CIMAssociatorsRequestMessage(
|
1071 kumpf 1.6 String::EMPTY,
|
1072 mike 1.1 CIMNamespaceName(),
|
1073 kumpf 1.6 objectName,
1074 assocClass,
1075 resultClass,
1076 role,
|
1077 mike 1.1 resultRole,
|
1078 kumpf 1.6 includeQualifiers,
1079 includeClassOrigin,
1080 propertyList,
|
1081 mike 1.1 QueueIdStack());
1082 }
1083
1084 CIMAssociatorNamesRequestMessage*
1085 CIMBinMsgDeserializer::_getAssociatorNamesRequestMessage(
1086 CIMBuffer& in)
1087 {
1088 CIMObjectPath objectName;
1089 CIMName assocClass;
1090 CIMName resultClass;
1091 String role;
1092 String resultRole;
1093
1094 if (!_getObjectPath(in, objectName))
|
1095 karl 1.11.2.3 return 0;
|
1096 mike 1.1
1097 if (!_getName(in, assocClass))
|
1098 karl 1.11.2.3 return 0;
|
1099 mike 1.1
1100 if (!_getName(in, resultClass))
|
1101 karl 1.11.2.3 return 0;
|
1102 mike 1.1
1103 if (!in.getString(role))
|
1104 karl 1.11.2.3 return 0;
|
1105 mike 1.1
1106 if (!in.getString(resultRole))
|
1107 karl 1.11.2.3 return 0;
|
1108 mike 1.1
1109 return new CIMAssociatorNamesRequestMessage(
1110 String::EMPTY,
|
1111 kumpf 1.6 CIMNamespaceName(),
1112 objectName,
1113 assocClass,
1114 resultClass,
|
1115 mike 1.1 role,
|
1116 kumpf 1.6 resultRole,
1117 QueueIdStack());
|
1118 mike 1.1 }
1119
1120 CIMReferencesRequestMessage*
1121 CIMBinMsgDeserializer::_getReferencesRequestMessage(CIMBuffer& in)
1122 {
1123 CIMObjectPath objectName;
1124 CIMName resultClass;
1125 String role;
1126 Boolean includeQualifiers;
1127 Boolean includeClassOrigin;
1128 CIMPropertyList propertyList;
1129
1130 if (!_getObjectPath(in, objectName))
|
1131 karl 1.11.2.3 return 0;
|
1132 mike 1.1
1133 if (!_getName(in, resultClass))
|
1134 karl 1.11.2.3 return 0;
|
1135 mike 1.1
1136 if (!in.getString(role))
|
1137 karl 1.11.2.3 return 0;
|
1138 mike 1.1
1139 if (!in.getBoolean(includeQualifiers))
|
1140 karl 1.11.2.3 return 0;
|
1141 mike 1.1
1142 if (!in.getBoolean(includeClassOrigin))
|
1143 karl 1.11.2.3 return 0;
|
1144 mike 1.1
1145 if (!_getPropertyList(in, propertyList))
|
1146 karl 1.11.2.3 return 0;
|
1147 mike 1.1
1148 return new CIMReferencesRequestMessage(
|
1149 kumpf 1.6 String::EMPTY,
|
1150 mike 1.1 CIMNamespaceName(),
|
1151 kumpf 1.6 objectName,
1152 resultClass,
1153 role,
1154 includeQualifiers,
1155 includeClassOrigin,
1156 propertyList,
|
1157 mike 1.1 QueueIdStack());
1158 }
1159
1160 CIMReferenceNamesRequestMessage*
1161 CIMBinMsgDeserializer::_getReferenceNamesRequestMessage(
1162 CIMBuffer& in)
1163 {
1164 CIMObjectPath objectName;
1165 CIMName resultClass;
1166 String role;
1167
1168 if (!_getObjectPath(in, objectName))
|
1169 karl 1.11.2.3 return 0;
|
1170 mike 1.1
1171 if (!_getName(in, resultClass))
|
1172 karl 1.11.2.3 return 0;
|
1173 mike 1.1
1174 if (!in.getString(role))
|
1175 karl 1.11.2.3 return 0;
|
1176 mike 1.1
1177 return new CIMReferenceNamesRequestMessage(
|
1178 kumpf 1.6 String::EMPTY,
1179 CIMNamespaceName(),
1180 objectName,
1181 resultClass,
1182 role,
|
1183 mike 1.1 QueueIdStack());
1184 }
1185
1186 CIMGetPropertyRequestMessage*
1187 CIMBinMsgDeserializer::_getGetPropertyRequestMessage(
1188 CIMBuffer& in)
1189 {
1190 CIMObjectPath instanceName;
1191 CIMName propertyName;
1192
1193 if (!_getObjectPath(in, instanceName))
|
1194 karl 1.11.2.3 return 0;
|
1195 mike 1.1
1196 if (!_getName(in, propertyName))
|
1197 karl 1.11.2.3 return 0;
|
1198 mike 1.1
1199 return new CIMGetPropertyRequestMessage(
|
1200 kumpf 1.6 String::EMPTY,
|
1201 mike 1.1 CIMNamespaceName(),
|
1202 kumpf 1.6 instanceName,
1203 propertyName,
|
1204 mike 1.1 QueueIdStack());
1205 }
1206
1207 CIMSetPropertyRequestMessage*
1208 CIMBinMsgDeserializer::_getSetPropertyRequestMessage(
1209 CIMBuffer& in)
1210 {
1211 CIMObjectPath instanceName;
1212 CIMParamValue newValue;
1213
1214 if (!_getObjectPath(in, instanceName))
|
1215 karl 1.11.2.3 return 0;
|
1216 mike 1.1
1217 if (!_getParamValue(in, newValue))
|
1218 karl 1.11.2.3 return 0;
|
1219 mike 1.1
1220 return new CIMSetPropertyRequestMessage(
|
1221 kumpf 1.6 String::EMPTY,
|
1222 mike 1.1 CIMNamespaceName(),
|
1223 kumpf 1.6 instanceName,
1224 newValue.getParameterName(),
|
1225 mike 1.1 newValue.getValue(),
1226 QueueIdStack());
1227 }
1228
1229 CIMInvokeMethodRequestMessage*
1230 CIMBinMsgDeserializer::_getInvokeMethodRequestMessage(
1231 CIMBuffer& in)
1232 {
1233 XmlEntry entry;
1234 CIMObjectPath instanceName;
1235 CIMName methodName;
1236 Array<CIMParamValue> inParameters;
1237
1238 if (!_getObjectPath(in, instanceName))
|
1239 karl 1.11.2.3 return 0;
|
1240 mike 1.1
1241 if (!_getName(in, methodName))
|
1242 karl 1.11.2.3 return 0;
|
1243 mike 1.1
1244 if (!in.getParamValueA(inParameters))
|
1245 karl 1.11.2.3 return 0;
|
1246 mike 1.1
1247 return new CIMInvokeMethodRequestMessage(
|
1248 kumpf 1.6 String::EMPTY,
|
1249 mike 1.1 CIMNamespaceName(),
|
1250 kumpf 1.6 instanceName,
1251 methodName,
1252 inParameters,
|
1253 mike 1.1 QueueIdStack());
1254 }
1255
1256 CIMCreateSubscriptionRequestMessage*
1257 CIMBinMsgDeserializer::_getCreateSubscriptionRequestMessage(
1258 CIMBuffer& in)
1259 {
1260 XmlEntry entry;
1261 CIMNamespaceName nameSpace;
1262 CIMInstance subscriptionInstance;
1263 Array<CIMName> classNames;
1264 CIMPropertyList propertyList;
1265 Uint16 repeatNotificationPolicy;
1266 String query;
1267
1268 if (!_getNamespaceName(in, nameSpace))
|
1269 karl 1.11.2.3 return 0;
|
1270 mike 1.1
1271 if (!_getInstance(in, subscriptionInstance))
|
1272 karl 1.11.2.3 return 0;
|
1273 mike 1.1
1274 if (!in.getNameA(classNames))
|
1275 karl 1.11.2.3 return 0;
|
1276 mike 1.1
1277 if (!_getPropertyList(in, propertyList))
|
1278 karl 1.11.2.3 return 0;
|
1279 mike 1.1
1280 if (!in.getUint16(repeatNotificationPolicy))
|
1281 karl 1.11.2.3 return 0;
|
1282 mike 1.1
1283 if (!in.getString(query))
|
1284 karl 1.11.2.3 return 0;
|
1285 mike 1.1
1286 return new CIMCreateSubscriptionRequestMessage(
|
1287 kumpf 1.6 String::EMPTY,
|
1288 mike 1.1 nameSpace,
|
1289 kumpf 1.6 subscriptionInstance,
1290 classNames,
|
1291 mike 1.1 propertyList,
|
1292 kumpf 1.6 repeatNotificationPolicy,
1293 query,
|
1294 mike 1.1 QueueIdStack());
1295 }
1296
1297 CIMModifySubscriptionRequestMessage*
1298 CIMBinMsgDeserializer::_getModifySubscriptionRequestMessage(
1299 CIMBuffer& in)
1300 {
1301 XmlEntry entry;
1302 CIMNamespaceName nameSpace;
1303 CIMInstance subscriptionInstance;
1304 Array<CIMName> classNames;
1305 CIMPropertyList propertyList;
1306 Uint16 repeatNotificationPolicy;
1307 String query;
1308
1309 if (!_getNamespaceName(in, nameSpace))
|
1310 karl 1.11.2.3 return 0;
|
1311 mike 1.1
1312 if (!_getInstance(in, subscriptionInstance))
|
1313 karl 1.11.2.3 return 0;
|
1314 mike 1.1
1315 if (!in.getNameA(classNames))
|
1316 karl 1.11.2.3 return 0;
|
1317 mike 1.1
1318 if (!_getPropertyList(in, propertyList))
|
1319 karl 1.11.2.3 return 0;
|
1320 mike 1.1
1321 if (!in.getUint16(repeatNotificationPolicy))
|
1322 karl 1.11.2.3 return 0;
|
1323 mike 1.1
1324 if (!in.getString(query))
|
1325 karl 1.11.2.3 return 0;
|
1326 mike 1.1
1327 return new CIMModifySubscriptionRequestMessage(
|
1328 kumpf 1.6 String::EMPTY,
|
1329 mike 1.1 nameSpace,
|
1330 kumpf 1.6 subscriptionInstance,
1331 classNames,
|
1332 mike 1.1 propertyList,
|
1333 kumpf 1.6 repeatNotificationPolicy,
1334 query,
|
1335 mike 1.1 QueueIdStack());
1336 }
1337
1338 CIMDeleteSubscriptionRequestMessage*
1339 CIMBinMsgDeserializer::_getDeleteSubscriptionRequestMessage(
1340 CIMBuffer& in)
1341 {
1342 XmlEntry entry;
1343 CIMNamespaceName nameSpace;
1344 CIMInstance subscriptionInstance;
1345 Array<CIMName> classNames;
1346
1347 if (!_getNamespaceName(in, nameSpace))
|
1348 karl 1.11.2.3 return 0;
|
1349 mike 1.1
1350 if (!_getInstance(in, subscriptionInstance))
|
1351 karl 1.11.2.3 return 0;
|
1352 mike 1.1
1353 if (!in.getNameA(classNames))
|
1354 karl 1.11.2.3 return 0;
|
1355 mike 1.1
1356 return new CIMDeleteSubscriptionRequestMessage(
1357 String::EMPTY,
|
1358 kumpf 1.6 nameSpace,
1359 subscriptionInstance,
1360 classNames,
|
1361 mike 1.1 QueueIdStack());
1362 }
1363
1364 CIMExportIndicationRequestMessage*
1365 CIMBinMsgDeserializer::_getExportIndicationRequestMessage(
1366 CIMBuffer& in)
1367 {
1368 String authType;
1369 String userName;
1370 String destinationPath;
1371 CIMInstance indicationInstance;
1372
1373 if (!_getUserInfo(in, authType, userName))
|
1374 karl 1.11.2.3 return 0;
|
1375 mike 1.1
1376 if (!in.getString(destinationPath))
|
1377 karl 1.11.2.3 return 0;
|
1378 mike 1.1
1379 if (!_getInstance(in, indicationInstance))
|
1380 karl 1.11.2.3 return 0;
|
1381 mike 1.1
1382 return new CIMExportIndicationRequestMessage(
|
1383 kumpf 1.6 String::EMPTY,
|
1384 mike 1.1 destinationPath,
|
1385 kumpf 1.6 indicationInstance,
1386 QueueIdStack(),
|
1387 mike 1.1 authType,
1388 userName);
1389 }
1390
1391 CIMProcessIndicationRequestMessage*
1392 CIMBinMsgDeserializer::_getProcessIndicationRequestMessage(
1393 CIMBuffer& in)
1394 {
1395 XmlEntry entry;
1396 CIMNamespaceName nameSpace;
1397 CIMInstance indicationInstance;
1398 Array<CIMObjectPath> subscriptionInstanceNames;
1399 CIMInstance provider;
|
1400 karl 1.11.2.2 Uint32 timeoutMilliSec;
|
1401 mike 1.1
1402 if (!_getNamespaceName(in, nameSpace))
|
1403 karl 1.11.2.3 return 0;
|
1404 mike 1.1
1405 if (!_getInstance(in, indicationInstance))
|
1406 karl 1.11.2.3 return 0;
|
1407 mike 1.1
1408 if (!in.getObjectPathA(subscriptionInstanceNames))
|
1409 karl 1.11.2.3 return 0;
|
1410 mike 1.1
1411 if (!_getInstance(in, provider))
|
1412 karl 1.11.2.3 return 0;
|
1413 mike 1.1
|
1414 karl 1.11.2.2 if (!in.getUint32(timeoutMilliSec))
|
1415 karl 1.11.2.3 return 0;
|
1416 karl 1.11.2.2
|
1417 mike 1.1 return new CIMProcessIndicationRequestMessage(
|
1418 kumpf 1.6 String::EMPTY,
|
1419 mike 1.1 nameSpace,
|
1420 kumpf 1.6 indicationInstance,
1421 subscriptionInstanceNames,
|
1422 mike 1.1 provider,
|
1423 karl 1.11.2.2 QueueIdStack(),
1424 timeoutMilliSec);
|
1425 mike 1.1 }
1426
1427 CIMDisableModuleRequestMessage*
1428 CIMBinMsgDeserializer::_getDisableModuleRequestMessage(
1429 CIMBuffer& in)
1430 {
1431 XmlEntry entry;
1432 String authType;
1433 String userName;
1434 CIMInstance providerModule;
1435 Array<CIMInstance> providers;
1436 Boolean disableProviderOnly;
1437 Array<Boolean> indicationProviders;
1438
1439 if (!_getUserInfo(in, authType, userName))
|
1440 karl 1.11.2.3 return 0;
|
1441 mike 1.1
1442 if (!_getInstance(in, providerModule))
|
1443 karl 1.11.2.3 return 0;
|
1444 mike 1.1
1445 if (!in.getInstanceA(providers))
|
1446 karl 1.11.2.3 return 0;
|
1447 mike 1.1
1448 if (!in.getBoolean(disableProviderOnly))
|
1449 karl 1.11.2.3 return 0;
|
1450 mike 1.1
1451 if (!in.getBooleanA(indicationProviders))
|
1452 karl 1.11.2.3 return 0;
|
1453 mike 1.1
1454 return new CIMDisableModuleRequestMessage(
1455 String::EMPTY,
1456 providerModule,
1457 providers,
1458 disableProviderOnly,
1459 indicationProviders,
1460 QueueIdStack(),
1461 authType,
1462 userName);
1463 }
1464
1465 CIMEnableModuleRequestMessage*
1466 CIMBinMsgDeserializer::_getEnableModuleRequestMessage(
1467 CIMBuffer& in)
1468 {
1469 String authType;
1470 String userName;
1471 CIMInstance providerModule;
1472
1473 if (!_getUserInfo(in, authType, userName))
|
1474 karl 1.11.2.3 return 0;
|
1475 mike 1.1
1476 if (!_getInstance(in, providerModule))
|
1477 karl 1.11.2.3 return 0;
|
1478 mike 1.1
1479 return new CIMEnableModuleRequestMessage(
1480 String::EMPTY,
1481 providerModule,
1482 QueueIdStack(),
1483 authType,
1484 userName);
1485 }
1486
1487 CIMStopAllProvidersRequestMessage*
1488 CIMBinMsgDeserializer::_getStopAllProvidersRequestMessage(
1489 CIMBuffer& in)
1490 {
|
1491 karl 1.11.2.1 Uint32 shutdownTimeout;
1492
1493 if (!in.getUint32(shutdownTimeout))
|
1494 karl 1.11.2.3 return 0;
|
1495 karl 1.11.2.1
|
1496 mike 1.1 return new CIMStopAllProvidersRequestMessage(
1497 String::EMPTY,
|
1498 karl 1.11.2.1 QueueIdStack(),
1499 shutdownTimeout);
|
1500 mike 1.1 }
1501
1502 CIMInitializeProviderAgentRequestMessage*
1503 CIMBinMsgDeserializer::_getInitializeProviderAgentRequestMessage(
1504 CIMBuffer& in)
1505 {
1506 XmlEntry entry;
1507 String pegasusHome;
1508 typedef Pair<String,String> ConfigPair;
1509 Array<ConfigPair> configProperties;
1510 Uint32 size;
1511 Boolean bindVerbose;
1512 Boolean subscriptionInitComplete;
1513
1514 if (!in.getString(pegasusHome))
|
1515 karl 1.11.2.3 return 0;
|
1516 mike 1.1
1517 if (!in.getUint32(size))
|
1518 karl 1.11.2.3 return 0;
|
1519 mike 1.1
1520 for (Uint32 i = 0; i < size; i++)
1521 {
1522 String first;
1523 String second;
1524
1525 if (!in.getString(first) || !in.getString(second))
|
1526 karl 1.11.2.3 return 0;
|
1527 mike 1.1
1528 configProperties.append(ConfigPair(first, second));
1529 }
1530
1531 if (!in.getBoolean(bindVerbose))
|
1532 karl 1.11.2.3 return 0;
|
1533 mike 1.1
1534 if (!in.getBoolean(subscriptionInitComplete))
|
1535 karl 1.11.2.3 return 0;
|
1536 mike 1.1
1537 return new CIMInitializeProviderAgentRequestMessage(
1538 String::EMPTY,
1539 pegasusHome,
1540 configProperties,
1541 bindVerbose,
1542 subscriptionInitComplete,
1543 QueueIdStack());
1544 }
1545
1546 CIMNotifyConfigChangeRequestMessage*
1547 CIMBinMsgDeserializer::_getNotifyConfigChangeRequestMessage(
1548 CIMBuffer& in)
1549 {
1550 String propertyName;
1551 String newPropertyValue;
1552 Boolean currentValueModified;
1553
1554 if (!in.getString(propertyName))
|
1555 karl 1.11.2.3 return 0;
|
1556 mike 1.1
1557 if (!in.getString(newPropertyValue))
|
1558 karl 1.11.2.3 return 0;
|
1559 mike 1.1
1560 if (!in.getBoolean(currentValueModified))
|
1561 karl 1.11.2.3 return 0;
|
1562 mike 1.1
1563 return new CIMNotifyConfigChangeRequestMessage(
1564 String::EMPTY,
1565 propertyName,
1566 newPropertyValue,
1567 currentValueModified,
1568 QueueIdStack());
1569 }
1570
|
1571 venkat.puvvada 1.8 CIMIndicationServiceDisabledRequestMessage*
|
1572 karl 1.11.2.3 CIMBinMsgDeserializer::_getIndicationServiceDisabledRequestMessage()
|
1573 venkat.puvvada 1.8 {
1574 return new CIMIndicationServiceDisabledRequestMessage(
1575 String(),
1576 QueueIdStack());
1577 }
1578
|
1579 mike 1.1 CIMSubscriptionInitCompleteRequestMessage*
|
1580 karl 1.11.2.3 CIMBinMsgDeserializer::_getSubscriptionInitCompleteRequestMessage()
|
1581 mike 1.1 {
1582 return new CIMSubscriptionInitCompleteRequestMessage(
1583 String::EMPTY,
1584 QueueIdStack());
1585 }
1586
|
1587 thilo.boehm 1.10 ProvAgtGetScmoClassRequestMessage*
1588 CIMBinMsgDeserializer::_getProvAgtGetScmoClassRequestMessage(
1589 CIMBuffer& in)
1590 {
1591 CIMName className;
1592 CIMNamespaceName nsName;
|
1593 karl 1.11.2.1 String messageID;
1594
1595 if (!in.getString(messageID))
|
1596 karl 1.11.2.3 return 0;
|
1597 thilo.boehm 1.10
1598 if (!in.getNamespaceName(nsName))
|
1599 karl 1.11.2.3 return 0;
|
1600 thilo.boehm 1.10
1601 if (!in.getName(className))
|
1602 karl 1.11.2.3 return 0;
|
1603 thilo.boehm 1.10
1604 return new ProvAgtGetScmoClassRequestMessage(
|
1605 karl 1.11.2.1 messageID,
|
1606 thilo.boehm 1.10 nsName,
1607 className,
1608 QueueIdStack());
1609 }
1610
|
1611 r.kieninger 1.9 CIMGetInstanceResponseMessage*
1612 CIMBinMsgDeserializer::_getGetInstanceResponseMessage(
1613 CIMBuffer& in,
1614 bool binaryResponse)
|
1615 mike 1.1 {
|
1616 r.kieninger 1.9 CIMGetInstanceResponseMessage* msg = new CIMGetInstanceResponseMessage(
1617 String::EMPTY,
1618 CIMException(),
1619 QueueIdStack());
|
1620 mike 1.1
|
1621 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
1622 mike 1.1
|
1623 r.kieninger 1.9 if (binaryResponse)
|
1624 mike 1.1 {
|
1625 thilo.boehm 1.10 if (!responseData.setBinary(in))
|
1626 mike 1.1 {
|
1627 r.kieninger 1.9 delete(msg);
1628 return 0;
|
1629 mike 1.1 }
1630 }
|
1631 r.kieninger 1.9 else
|
1632 mike 1.1 {
|
1633 thilo.boehm 1.10 if (!responseData.setXml(in))
|
1634 mike 1.1 {
|
1635 r.kieninger 1.9 delete(msg);
1636 return 0;
|
1637 mike 1.1 }
|
1638 mike 1.3 }
1639
|
1640 r.kieninger 1.9 return msg;
|
1641 mike 1.1 }
1642
1643 CIMDeleteInstanceResponseMessage*
|
1644 karl 1.11.2.3 CIMBinMsgDeserializer::_getDeleteInstanceResponseMessage()
|
1645 mike 1.1 {
1646 return new CIMDeleteInstanceResponseMessage(
1647 String::EMPTY,
1648 CIMException(),
1649 QueueIdStack());
1650 }
1651
1652 CIMCreateInstanceResponseMessage*
1653 CIMBinMsgDeserializer::_getCreateInstanceResponseMessage(
1654 CIMBuffer& in)
1655 {
1656 CIMObjectPath instanceName;
1657
1658 if (!_getObjectPath(in, instanceName))
|
1659 karl 1.11.2.3 return 0;
|
1660 mike 1.1
1661 return new CIMCreateInstanceResponseMessage(
1662 String::EMPTY,
1663 CIMException(),
1664 QueueIdStack(),
1665 instanceName);
1666 }
1667
1668 CIMModifyInstanceResponseMessage*
|
1669 karl 1.11.2.3 CIMBinMsgDeserializer::_getModifyInstanceResponseMessage()
|
1670 mike 1.1 {
1671 return new CIMModifyInstanceResponseMessage(
1672 String::EMPTY,
1673 CIMException(),
1674 QueueIdStack());
1675 }
1676
1677 CIMEnumerateInstancesResponseMessage*
1678 CIMBinMsgDeserializer::_getEnumerateInstancesResponseMessage(
|
1679 mike 1.3 CIMBuffer& in,
1680 bool binaryResponse)
|
1681 mike 1.1 {
|
1682 r.kieninger 1.9 CIMEnumerateInstancesResponseMessage* msg;
|
1683 mike 1.1
|
1684 r.kieninger 1.9 msg = new CIMEnumerateInstancesResponseMessage(String::EMPTY,
1685 CIMException(), QueueIdStack());
|
1686 mike 1.1
|
1687 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
1688 mike 1.1
|
1689 r.kieninger 1.9 if (binaryResponse)
1690 {
|
1691 thilo.boehm 1.10 if (!responseData.setBinary(in))
|
1692 r.kieninger 1.9 {
1693 delete(msg);
|
1694 mike 1.1 return 0;
|
1695 r.kieninger 1.9 }
|
1696 mike 1.1
|
1697 mike 1.3 return msg;
|
1698 mike 1.1 }
|
1699 mike 1.3 else
1700 {
|
1701 thilo.boehm 1.10 if (!responseData.setXml(in))
|
1702 r.kieninger 1.9 {
1703 delete(msg);
|
1704 mike 1.3 return 0;
1705 }
|
1706 mike 1.1
|
1707 mike 1.3 return msg;
1708 }
|
1709 mike 1.1 }
1710
1711 CIMEnumerateInstanceNamesResponseMessage*
1712 CIMBinMsgDeserializer::_getEnumerateInstanceNamesResponseMessage(
1713 CIMBuffer& in)
1714 {
|
1715 thilo.boehm 1.10 CIMEnumerateInstanceNamesResponseMessage* msg;
1716
1717 msg = new CIMEnumerateInstanceNamesResponseMessage(String::EMPTY,
1718 CIMException(),
1719 QueueIdStack());
1720
1721 CIMResponseData& responseData = msg->getResponseData();
|
1722 mike 1.1
|
1723 thilo.boehm 1.10 if (!responseData.setBinary(in))
1724 {
1725 delete(msg);
1726 return 0;
1727 }
|
1728 mike 1.1
|
1729 thilo.boehm 1.10 return msg;
|
1730 mike 1.1 }
1731
1732 CIMExecQueryResponseMessage*
1733 CIMBinMsgDeserializer::_getExecQueryResponseMessage(
|
1734 r.kieninger 1.9 CIMBuffer& in,
1735 bool binaryResponse)
|
1736 mike 1.1 {
|
1737 r.kieninger 1.9 CIMExecQueryResponseMessage* msg;
1738
1739 msg = new CIMExecQueryResponseMessage(String::EMPTY,
1740 CIMException(), QueueIdStack());
1741
|
1742 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
1743 mike 1.1
|
1744 r.kieninger 1.9 if (binaryResponse)
1745 {
|
1746 thilo.boehm 1.10 if (!responseData.setBinary(in))
|
1747 r.kieninger 1.9 {
1748 delete(msg);
1749 return 0;
1750 }
1751 }
1752 else
1753 {
|
1754 thilo.boehm 1.10 if (!responseData.setXml(in))
|
1755 r.kieninger 1.9 {
1756 delete(msg);
1757 return 0;
1758 }
1759 }
|
1760 mike 1.1
|
1761 r.kieninger 1.9 return msg;
|
1762 mike 1.1 }
1763
1764 CIMAssociatorsResponseMessage*
1765 CIMBinMsgDeserializer::_getAssociatorsResponseMessage(
|
1766 r.kieninger 1.9 CIMBuffer& in,
1767 bool binaryResponse)
|
1768 mike 1.1 {
|
1769 r.kieninger 1.9 CIMAssociatorsResponseMessage* msg;
1770
1771 msg = new CIMAssociatorsResponseMessage(String::EMPTY,
1772 CIMException(), QueueIdStack());
1773
|
1774 thilo.boehm 1.10 CIMResponseData& responseData = msg->getResponseData();
|
1775 mike 1.1
|
1776 r.kieninger 1.9 if (binaryResponse)
1777 {
|
1778 thilo.boehm 1.10 if (!responseData.setBinary(in))
|
1779 r.kieninger 1.9 {
1780 delete(msg);
1781 return 0;
1782 }
1783 }
1784 else
1785 {
|
1786 thilo.boehm 1.10 if (!responseData.setXml(in))
|
1787 r.kieninger 1.9 {
1788 delete(msg);
1789 return 0;
1790 }
1791 }
|
1792 mike 1.1
|
1793 r.kieninger 1.9 return msg;
|
1794 mike 1.1 }
1795
1796 CIMAssociatorNamesResponseMessage*
1797 CIMBinMsgDeserializer::_getAssociatorNamesResponseMessage(
1798 CIMBuffer& in)
1799 {
|
1800 thilo.boehm 1.10 CIMAssociatorNamesResponseMessage* msg;
1801
1802 msg = new CIMAssociatorNamesResponseMessage(String::EMPTY,
1803 CIMException(), QueueIdStack());
1804
1805 CIMResponseData& responseData = msg->getResponseData();
|
1806 mike 1.1
|
1807 thilo.boehm 1.10 if (!responseData.setBinary(in))
1808 {
1809 delete(msg);
1810 return 0;
1811 }
|
1812 mike 1.1
|
1813 thilo.boehm 1.10 return msg;
|
1814 mike 1.1 }
1815
1816 CIMReferencesResponseMessage*
1817 CIMBinMsgDeserializer::_getReferencesResponseMessage(
|
1818 karl 1.11.2.1 CIMBuffer& in,
1819 bool binaryResponse)
|
1820 mike 1.1 {
|
1821 thilo.boehm 1.10 CIMReferencesResponseMessage* msg;
1822
1823 msg = new CIMReferencesResponseMessage(String::EMPTY,
1824 CIMException(), QueueIdStack());
1825
1826 CIMResponseData& responseData = msg->getResponseData();
|
1827 mike 1.1
|
1828 karl 1.11.2.1 if (binaryResponse)
|
1829 thilo.boehm 1.10 {
|
1830 karl 1.11.2.1 if (!responseData.setBinary(in))
1831 {
1832 delete(msg);
1833 return 0;
1834 }
1835 }
1836 else
1837 {
1838 if (!responseData.setXml(in))
1839 {
1840 delete(msg);
1841 return 0;
1842 }
|
1843 thilo.boehm 1.10 }
|
1844 mike 1.1
|
1845 thilo.boehm 1.10 return msg;
|
1846 mike 1.1 }
1847
1848 CIMReferenceNamesResponseMessage*
1849 CIMBinMsgDeserializer::_getReferenceNamesResponseMessage(
1850 CIMBuffer& in)
1851 {
|
1852 thilo.boehm 1.10 CIMReferenceNamesResponseMessage* msg;
1853
1854 msg = new CIMReferenceNamesResponseMessage(String::EMPTY,
1855 CIMException(), QueueIdStack());
1856
1857 CIMResponseData& responseData = msg->getResponseData();
|
1858 mike 1.1
|
1859 thilo.boehm 1.10 if (!responseData.setBinary(in))
1860 {
1861 delete(msg);
1862 return 0;
1863 }
|
1864 mike 1.1
|
1865 thilo.boehm 1.10 return msg;
|
1866 mike 1.1 }
1867
1868 CIMGetPropertyResponseMessage*
1869 CIMBinMsgDeserializer::_getGetPropertyResponseMessage(
1870 CIMBuffer& in)
1871 {
1872 CIMParamValue value;
1873
1874 if (!_getParamValue(in, value))
|
1875 karl 1.11.2.3 return 0;
|
1876 mike 1.1
1877 return new CIMGetPropertyResponseMessage(
1878 String::EMPTY,
1879 CIMException(),
1880 QueueIdStack(),
1881 value.getValue());
1882 }
1883
1884 CIMSetPropertyResponseMessage*
|
1885 karl 1.11.2.3 CIMBinMsgDeserializer::_getSetPropertyResponseMessage()
|
1886 mike 1.1 {
1887 return new CIMSetPropertyResponseMessage(
1888 String::EMPTY,
1889 CIMException(),
1890 QueueIdStack());
1891 }
1892
1893 CIMInvokeMethodResponseMessage*
1894 CIMBinMsgDeserializer::_getInvokeMethodResponseMessage(
1895 CIMBuffer& in)
1896 {
1897 XmlEntry entry;
1898 CIMParamValue genericParamValue;
1899 CIMParamValue retValue;
1900 CIMName methodName;
1901 Array<CIMParamValue> outParameters;
1902
1903 if (!_getParamValue(in, retValue))
|
1904 karl 1.11.2.3 return 0;
|
1905 mike 1.1
1906 if (!in.getParamValueA(outParameters))
|
1907 karl 1.11.2.3 return 0;
|
1908 mike 1.1
1909 if (!_getName(in, methodName))
|
1910 karl 1.11.2.3 return 0;
|
1911 mike 1.1
1912 return new CIMInvokeMethodResponseMessage(
1913 String::EMPTY,
1914 CIMException(),
1915 QueueIdStack(),
1916 retValue.getValue(),
1917 outParameters,
1918 methodName);
1919 }
1920
1921 CIMCreateSubscriptionResponseMessage*
|
1922 karl 1.11.2.3 CIMBinMsgDeserializer::_getCreateSubscriptionResponseMessage()
|
1923 mike 1.1 {
1924 return new CIMCreateSubscriptionResponseMessage(
1925 String::EMPTY,
1926 CIMException(),
1927 QueueIdStack());
1928 }
1929
1930 CIMModifySubscriptionResponseMessage*
|
1931 karl 1.11.2.3 CIMBinMsgDeserializer::_getModifySubscriptionResponseMessage()
|
1932 mike 1.1 {
1933 return new CIMModifySubscriptionResponseMessage(
1934 String::EMPTY,
1935 CIMException(),
1936 QueueIdStack());
1937 }
1938
1939 CIMDeleteSubscriptionResponseMessage*
|
1940 karl 1.11.2.3 CIMBinMsgDeserializer::_getDeleteSubscriptionResponseMessage()
|
1941 mike 1.1 {
1942 return new CIMDeleteSubscriptionResponseMessage(
1943 String::EMPTY,
1944 CIMException(),
1945 QueueIdStack());
1946 }
1947
1948 CIMExportIndicationResponseMessage*
|
1949 karl 1.11.2.3 CIMBinMsgDeserializer::_getExportIndicationResponseMessage()
|
1950 mike 1.1 {
1951 return new CIMExportIndicationResponseMessage(
1952 String::EMPTY,
1953 CIMException(),
1954 QueueIdStack());
1955 }
1956
1957 CIMProcessIndicationResponseMessage*
|
1958 karl 1.11.2.3 CIMBinMsgDeserializer::_getProcessIndicationResponseMessage()
|
1959 mike 1.1 {
1960 return new CIMProcessIndicationResponseMessage(
1961 String::EMPTY,
1962 CIMException(),
1963 QueueIdStack());
1964 }
1965
1966 CIMDisableModuleResponseMessage*
1967 CIMBinMsgDeserializer::_getDisableModuleResponseMessage(
1968 CIMBuffer& in)
1969 {
1970 XmlEntry entry;
1971 CIMValue genericValue;
1972 Array<Uint16> operationalStatus;
1973
1974 if (!in.getUint16A(operationalStatus))
|
1975 karl 1.11.2.3 return 0;
|
1976 mike 1.1
1977 return new CIMDisableModuleResponseMessage(
1978 String::EMPTY,
1979 CIMException(),
1980 QueueIdStack(),
1981 operationalStatus);
1982 }
1983
1984 CIMEnableModuleResponseMessage*
1985 CIMBinMsgDeserializer::_getEnableModuleResponseMessage(
1986 CIMBuffer& in)
1987 {
1988 XmlEntry entry;
1989 CIMValue genericValue;
1990 Array<Uint16> operationalStatus;
1991
1992 if (!in.getUint16A(operationalStatus))
|
1993 karl 1.11.2.3 return 0;
|
1994 mike 1.1
1995 return new CIMEnableModuleResponseMessage(
1996 String::EMPTY,
1997 CIMException(),
1998 QueueIdStack(),
1999 operationalStatus);
2000 }
2001
2002 CIMStopAllProvidersResponseMessage*
|
2003 karl 1.11.2.3 CIMBinMsgDeserializer::_getStopAllProvidersResponseMessage()
|
2004 mike 1.1 {
2005 return new CIMStopAllProvidersResponseMessage(
2006 String::EMPTY,
2007 CIMException(),
2008 QueueIdStack());
2009 }
2010
2011 CIMInitializeProviderAgentResponseMessage*
|
2012 karl 1.11.2.3 CIMBinMsgDeserializer::_getInitializeProviderAgentResponseMessage()
|
2013 mike 1.1 {
2014 return new CIMInitializeProviderAgentResponseMessage(
2015 String::EMPTY,
2016 CIMException(),
2017 QueueIdStack());
2018 }
2019
2020 CIMNotifyConfigChangeResponseMessage*
|
2021 karl 1.11.2.3 CIMBinMsgDeserializer::_getNotifyConfigChangeResponseMessage()
|
2022 mike 1.1 {
2023 return new CIMNotifyConfigChangeResponseMessage(
2024 String::EMPTY,
2025 CIMException(),
2026 QueueIdStack());
2027 }
2028
2029 CIMSubscriptionInitCompleteResponseMessage*
|
2030 karl 1.11.2.3 CIMBinMsgDeserializer::_getSubscriptionInitCompleteResponseMessage()
|
2031 mike 1.1 {
2032 return new CIMSubscriptionInitCompleteResponseMessage(
2033 String::EMPTY,
2034 CIMException(),
2035 QueueIdStack());
2036 }
2037
|
2038 venkat.puvvada 1.8 CIMIndicationServiceDisabledResponseMessage*
|
2039 karl 1.11.2.3 CIMBinMsgDeserializer::_getIndicationServiceDisabledResponseMessage()
|
2040 venkat.puvvada 1.8 {
2041 return new CIMIndicationServiceDisabledResponseMessage(
2042 String(),
2043 CIMException(),
2044 QueueIdStack());
2045 }
2046
|
2047 thilo.boehm 1.10 ProvAgtGetScmoClassResponseMessage*
2048 CIMBinMsgDeserializer::_getProvAgtGetScmoClassResponseMessage(
2049 CIMBuffer& in)
2050 {
2051 SCMOClass theClass("","");
|
2052 karl 1.11.2.1 String messageID;
|
2053 thilo.boehm 1.10
|
2054 karl 1.11.2.1 if (!in.getString(messageID))
|
2055 karl 1.11.2.3 return 0;
|
2056 thilo.boehm 1.10
2057 if (!in.getSCMOClass(theClass))
|
2058 karl 1.11.2.3 return 0;
|
2059 thilo.boehm 1.10
2060 return new ProvAgtGetScmoClassResponseMessage(
|
2061 karl 1.11.2.1 messageID,
|
2062 thilo.boehm 1.10 CIMException(),
2063 QueueIdStack(),
2064 theClass);
2065 }
2066
|
2067 mike 1.1 PEGASUS_NAMESPACE_END
|