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/OperationContextInternal.h>
33 #include "CIMBinMsgSerializer.h"
|
34 thilo.boehm 1.9 #include "CIMInternalXmlEncoder.h"
|
35 karl 1.19 #include <Pegasus/Common/Tracer.h>
|
36 mike 1.1
37 PEGASUS_NAMESPACE_BEGIN
38
39 void CIMBinMsgSerializer::serialize(
|
40 kumpf 1.5 CIMBuffer& out,
|
41 mike 1.1 CIMMessage* cimMessage)
42 {
|
43 karl 1.19 PEG_METHOD_ENTER(TRC_DISPATCHER, "CIMBinMsgSerializer::serialize");
44
|
45 mike 1.1 if (cimMessage == 0)
46 return;
47
|
48 karl 1.21 PEGASUS_DEBUG_ASSERT(cimMessage->valid());
49
|
50 karl 1.19 PEG_TRACE((TRC_DISPATCHER, Tracer::LEVEL4,
|
51 karl 1.20 "Serialize MessageId=%s type=%s binaryReq=%s"
52 " binaryResp=%s iscomplete=%s internal=%s",
|
53 karl 1.19 (const char*)cimMessage->messageId.getCString(),
54 MessageTypeToString(cimMessage->getType()),
55 boolToString(cimMessage->binaryRequest),
56 boolToString(cimMessage->binaryResponse),
57 boolToString(cimMessage->isComplete()),
58 boolToString(cimMessage->internalOperation)
59 ));
60
|
61 mike 1.1 // [messageId]
62 out.putString(cimMessage->messageId);
63
|
64 mike 1.2 // [binaryRequest]
65 out.putBoolean(cimMessage->binaryRequest);
66
67 // [binaryResponse]
68 out.putBoolean(cimMessage->binaryResponse);
69
|
70 karl 1.19 // [internalOperation]
71 out.putBoolean(cimMessage->internalOperation);
72
|
73 mike 1.1 // [type]
74 out.putUint32(Uint32(cimMessage->getType()));
75
76 #ifndef PEGASUS_DISABLE_PERFINST
77 // [serverStartTimeMicroseconds]
78 out.putUint64(cimMessage->getServerStartTime());
79 // [providerTimeMicroseconds]
80 out.putUint64(cimMessage->getProviderTime());
81 #endif
82
83 // [isComplete]
84 out.putBoolean(cimMessage->isComplete());
85
86 // [index]
87 out.putUint32(cimMessage->getIndex());
88
89 // [operationContext]
90
91 _serializeOperationContext(out, cimMessage->operationContext);
92
93 // [CIMRequestMessage]
94 mike 1.1
95 CIMRequestMessage* req;
96
97 if ((req = dynamic_cast<CIMRequestMessage*>(cimMessage)))
98 {
99 out.putPresent(true);
100 _putRequestMessage(out, req);
101 }
102 else
103 out.putPresent(false);
104
105 // [CIMResponseMessage]
106
107 CIMResponseMessage* rsp;
108
109 if ((rsp = dynamic_cast<CIMResponseMessage*>(cimMessage)))
110 {
111 out.putPresent(true);
112 _putResponseMessage(out, rsp);
113 }
114 else
115 mike 1.1 out.putPresent(false);
|
116 karl 1.19
117 PEG_METHOD_EXIT();
|
118 mike 1.1 }
119
120 void CIMBinMsgSerializer::_putRequestMessage(
121 CIMBuffer& out,
122 CIMRequestMessage* msg)
123 {
124 PEGASUS_ASSERT(msg != 0);
125
126 // [queueIdStack]
127
128 _serializeQueueIdStack(out, msg->queueIds);
129
130 // [CIMOperationRequestMessage]
131
132 CIMOperationRequestMessage* oreq;
133
134 if ((oreq = dynamic_cast<CIMOperationRequestMessage*>(msg)))
135 {
136 out.putPresent(true);
137
138 // [userInfo]
139 mike 1.1 _serializeUserInfo(out, oreq->authType, oreq->userName);
140
141 // [nameSpace]
142 _putNamespaceName(out, oreq->nameSpace);
143
144 // [className]
145 _putName(out, oreq->className);
146
147 // [providerType]
148 out.putUint32(oreq->providerType);
149
150 // [message]
151
152 switch (msg->getType())
153 {
154 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
155 _putGetInstanceRequestMessage(
156 out, (CIMGetInstanceRequestMessage*)msg);
157 break;
158 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
159 _putDeleteInstanceRequestMessage(
160 mike 1.1 out, (CIMDeleteInstanceRequestMessage*)msg);
161 break;
162 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
163 _putCreateInstanceRequestMessage(
164 out, (CIMCreateInstanceRequestMessage*)msg);
165 break;
166 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
167 _putModifyInstanceRequestMessage(
168 out, (CIMModifyInstanceRequestMessage*)msg);
169 break;
170 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
171 _putEnumerateInstancesRequestMessage(
172 out, (CIMEnumerateInstancesRequestMessage*)msg);
173 break;
174 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
|
175 thilo.boehm 1.10 // not implemented
|
176 mike 1.1 break;
177 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
178 _putExecQueryRequestMessage(
179 out, (CIMExecQueryRequestMessage*)msg);
180 break;
181 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
182 _putGetPropertyRequestMessage(
183 out, (CIMGetPropertyRequestMessage*)msg);
184 break;
185 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
186 _putSetPropertyRequestMessage(
187 out, (CIMSetPropertyRequestMessage*)msg);
188 break;
189 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
190 _putAssociatorsRequestMessage(
191 out, (CIMAssociatorsRequestMessage*)msg);
192 break;
193 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
194 _putAssociatorNamesRequestMessage(
195 out, (CIMAssociatorNamesRequestMessage*)msg);
196 break;
197 mike 1.1 case CIM_REFERENCES_REQUEST_MESSAGE:
198 _putReferencesRequestMessage(
199 out, (CIMReferencesRequestMessage*)msg);
200 break;
201 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
202 _putReferenceNamesRequestMessage(
203 out, (CIMReferenceNamesRequestMessage*)msg);
204 break;
205 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
206 _putInvokeMethodRequestMessage(
207 out, (CIMInvokeMethodRequestMessage*)msg);
208 break;
209
210 default:
|
211 dl.meetei 1.16 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
212 mike 1.1 }
213 }
214 else
215 out.putPresent(false);
216
217 // [CIMIndicationRequestMessage]
218
219 CIMIndicationRequestMessage* ireq;
220
221 if ((ireq = dynamic_cast<CIMIndicationRequestMessage*>(msg)))
222 {
223 out.putPresent(true);
224
225 // [userInfo]
226 _serializeUserInfo(out, ireq->authType, ireq->userName);
227
228 // [message]
229
230 switch (msg->getType())
231 {
232 case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
233 mike 1.1 _putCreateSubscriptionRequestMessage(
234 out, (CIMCreateSubscriptionRequestMessage*)msg);
235 break;
236 case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:
237 _putModifySubscriptionRequestMessage(
238 out, (CIMModifySubscriptionRequestMessage*)msg);
239 break;
240 case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:
241 _putDeleteSubscriptionRequestMessage(
242 out, (CIMDeleteSubscriptionRequestMessage*)msg);
243 break;
244 default:
|
245 dl.meetei 1.16 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
246 mike 1.1 }
247 }
248 else
249 out.putPresent(false);
250
251 // [Other]
252
253 if (!oreq && !ireq)
254 {
255 out.putPresent(true);
256
257 switch (msg->getType())
258 {
259 case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
260 _putExportIndicationRequestMessage(
261 out, (CIMExportIndicationRequestMessage*)msg);
262 break;
263 case CIM_PROCESS_INDICATION_REQUEST_MESSAGE:
264 _putProcessIndicationRequestMessage(
265 out, (CIMProcessIndicationRequestMessage*)msg);
266 break;
267 mike 1.1 case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
268 _putDisableModuleRequestMessage(
269 out, (CIMDisableModuleRequestMessage*)msg);
270 break;
271 case CIM_ENABLE_MODULE_REQUEST_MESSAGE:
272 _putEnableModuleRequestMessage(
273 out, (CIMEnableModuleRequestMessage*)msg);
274 break;
275 case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:
|
276 venkat.puvvada 1.14 _putStopAllProvidersRequestMessage(
277 out, (CIMStopAllProvidersRequestMessage*)msg);
|
278 mike 1.1 break;
279 case CIM_INITIALIZE_PROVIDER_AGENT_REQUEST_MESSAGE:
280 _putInitializeProviderAgentRequestMessage(
281 out, (CIMInitializeProviderAgentRequestMessage*)msg);
282 break;
283
284 case CIM_NOTIFY_CONFIG_CHANGE_REQUEST_MESSAGE:
285 _putNotifyConfigChangeRequestMessage(
286 out, (CIMNotifyConfigChangeRequestMessage*)msg);
287 break;
288
289 case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:
|
290 thilo.boehm 1.10 // not implemented
|
291 mike 1.1 break;
292
|
293 venkat.puvvada 1.7 case CIM_INDICATION_SERVICE_DISABLED_REQUEST_MESSAGE:
|
294 thilo.boehm 1.10 // not implemented
|
295 venkat.puvvada 1.7 break;
|
296 thilo.boehm 1.9 case PROVAGT_GET_SCMOCLASS_REQUEST_MESSAGE:
297 _putProvAgtGetScmoClassRequestMessage(
298 out,(ProvAgtGetScmoClassRequestMessage *)msg);
299 break;
|
300 venkat.puvvada 1.7
|
301 mike 1.1 default:
|
302 dl.meetei 1.16 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
303 mike 1.1 }
304 }
305 else
306 out.putPresent(false);
307 }
308
309 void CIMBinMsgSerializer::_putResponseMessage(
310 CIMBuffer& out,
311 CIMResponseMessage* cimMessage)
312 {
313 PEGASUS_ASSERT(cimMessage != 0);
314
315 // [queueIdStack]
316 _serializeQueueIdStack(out, cimMessage->queueIds);
317
318 // [cimException]
319 _putException(out, cimMessage->cimException);
320
321 // [message]
322
323 switch (cimMessage->getType())
324 mike 1.1 {
325 case CIM_GET_INSTANCE_RESPONSE_MESSAGE:
326 _putGetInstanceResponseMessage(
327 out, (CIMGetInstanceResponseMessage*)cimMessage);
328 break;
329 case CIM_DELETE_INSTANCE_RESPONSE_MESSAGE:
|
330 thilo.boehm 1.10 // not implemented
|
331 mike 1.1 break;
332 case CIM_CREATE_INSTANCE_RESPONSE_MESSAGE:
333 _putCreateInstanceResponseMessage(
334 out, (CIMCreateInstanceResponseMessage*)cimMessage);
335 break;
336 case CIM_MODIFY_INSTANCE_RESPONSE_MESSAGE:
|
337 thilo.boehm 1.10 // not implemented
|
338 mike 1.1 break;
339 case CIM_ENUMERATE_INSTANCES_RESPONSE_MESSAGE:
340 _putEnumerateInstancesResponseMessage(
341 out, (CIMEnumerateInstancesResponseMessage*)cimMessage);
342 break;
343 case CIM_ENUMERATE_INSTANCE_NAMES_RESPONSE_MESSAGE:
344 _putEnumerateInstanceNamesResponseMessage(
345 out, (CIMEnumerateInstanceNamesResponseMessage*)cimMessage);
346 break;
347 case CIM_EXEC_QUERY_RESPONSE_MESSAGE:
348 _putExecQueryResponseMessage(
349 out, (CIMExecQueryResponseMessage*)cimMessage);
350 break;
351 case CIM_GET_PROPERTY_RESPONSE_MESSAGE:
352 _putGetPropertyResponseMessage(
353 out, (CIMGetPropertyResponseMessage*)cimMessage);
354 break;
355 case CIM_SET_PROPERTY_RESPONSE_MESSAGE:
|
356 thilo.boehm 1.10 // not implemented
|
357 mike 1.1 break;
358 case CIM_ASSOCIATORS_RESPONSE_MESSAGE:
359 _putAssociatorsResponseMessage(
360 out, (CIMAssociatorsResponseMessage*)cimMessage);
361 break;
362 case CIM_ASSOCIATOR_NAMES_RESPONSE_MESSAGE:
363 _putAssociatorNamesResponseMessage(
364 out, (CIMAssociatorNamesResponseMessage*)cimMessage);
365 break;
366 case CIM_REFERENCES_RESPONSE_MESSAGE:
367 _putReferencesResponseMessage(
368 out, (CIMReferencesResponseMessage*)cimMessage);
369 break;
370 case CIM_REFERENCE_NAMES_RESPONSE_MESSAGE:
371 _putReferenceNamesResponseMessage(
372 out, (CIMReferenceNamesResponseMessage*)cimMessage);
373 break;
374 case CIM_INVOKE_METHOD_RESPONSE_MESSAGE:
375 _putInvokeMethodResponseMessage(
376 out, (CIMInvokeMethodResponseMessage*)cimMessage);
377 break;
378 mike 1.1 case CIM_CREATE_SUBSCRIPTION_RESPONSE_MESSAGE:
|
379 thilo.boehm 1.10 // not implemented
|
380 mike 1.1 break;
381 case CIM_MODIFY_SUBSCRIPTION_RESPONSE_MESSAGE:
|
382 thilo.boehm 1.10 // not implemented
|
383 mike 1.1 break;
384 case CIM_DELETE_SUBSCRIPTION_RESPONSE_MESSAGE:
|
385 thilo.boehm 1.10 // not implemented
|
386 mike 1.1 break;
387 case CIM_EXPORT_INDICATION_RESPONSE_MESSAGE:
|
388 thilo.boehm 1.10 // not implemented
|
389 mike 1.1 break;
390 case CIM_PROCESS_INDICATION_RESPONSE_MESSAGE:
|
391 thilo.boehm 1.10 // not implemented
|
392 mike 1.1 break;
393 case CIM_DISABLE_MODULE_RESPONSE_MESSAGE:
394 _putDisableModuleResponseMessage(
395 out, (CIMDisableModuleResponseMessage*)cimMessage);
396 break;
397 case CIM_ENABLE_MODULE_RESPONSE_MESSAGE:
398 _putEnableModuleResponseMessage(
399 out, (CIMEnableModuleResponseMessage*)cimMessage);
400 break;
401 case CIM_STOP_ALL_PROVIDERS_RESPONSE_MESSAGE:
|
402 thilo.boehm 1.10 // not implemented
|
403 mike 1.1 break;
404 case CIM_INITIALIZE_PROVIDER_AGENT_RESPONSE_MESSAGE:
|
405 thilo.boehm 1.10 // not implemented
|
406 mike 1.1 break;
407 case CIM_NOTIFY_CONFIG_CHANGE_RESPONSE_MESSAGE:
|
408 thilo.boehm 1.10 // not implemented
|
409 mike 1.1 break;
410 case CIM_SUBSCRIPTION_INIT_COMPLETE_RESPONSE_MESSAGE:
|
411 thilo.boehm 1.10 // not implemented
|
412 mike 1.1 break;
|
413 venkat.puvvada 1.7 case CIM_INDICATION_SERVICE_DISABLED_RESPONSE_MESSAGE:
|
414 thilo.boehm 1.10 // not implemented
|
415 venkat.puvvada 1.7 break;
|
416 thilo.boehm 1.9 case PROVAGT_GET_SCMOCLASS_RESPONSE_MESSAGE:
417 _putProvAgtGetScmoClassResponseMessage(
418 out,
419 (ProvAgtGetScmoClassResponseMessage *)
420 cimMessage);
421 break;
|
422 mike 1.1
423 default:
|
424 dl.meetei 1.16 PEGASUS_UNREACHABLE(PEGASUS_ASSERT(0);)
|
425 mike 1.1 }
426 }
427
428 void CIMBinMsgSerializer::_serializeUserInfo(
429 CIMBuffer& out,
430 const String& authType,
431 const String& userName)
432 {
433 out.putString(authType);
434 out.putString(userName);
435 }
436
437 void CIMBinMsgSerializer::_serializeQueueIdStack(
438 CIMBuffer& out,
439 const QueueIdStack& stack)
440 {
441 out.putUint32(stack.size());
442
443 for (Uint32 i = 0; i < stack.size(); i++)
444 out.putUint32(stack[i]);
445 }
446 mike 1.1
447 void CIMBinMsgSerializer::_serializeOperationContext(
448 CIMBuffer& out,
449 const OperationContext& operationContext)
450 {
451 // [IdentityContainer]
452
453 if (operationContext.contains(IdentityContainer::NAME))
454 {
455 out.putPresent(true);
456
457 const IdentityContainer container =
458 operationContext.get(IdentityContainer::NAME);
459
460 out.putString(container.getUserName());
461 }
462 else
463 out.putPresent(false);
464
465 // [SubscriptionInstanceContainer]
466
467 mike 1.1 if (operationContext.contains(SubscriptionInstanceContainer::NAME))
468 {
469 out.putPresent(true);
470
471 const SubscriptionInstanceContainer container =
472 operationContext.get(SubscriptionInstanceContainer::NAME);
473
474 _putInstance(out, container.getInstance());
475 }
476 else
477 out.putPresent(false);
478
479 // [SubscriptionFilterConditionContainer]
480
481 if (operationContext.contains(SubscriptionFilterConditionContainer::NAME))
482 {
483 out.putPresent(true);
484
485 const SubscriptionFilterConditionContainer container =
486 operationContext.get(SubscriptionFilterConditionContainer::NAME);
487
488 mike 1.1 out.putString(container.getFilterCondition());
489 out.putString(container.getQueryLanguage());
490 }
491 else
492 out.putPresent(false);
493
494 // [SubscriptionFilterQueryContainer]
495
496 if (operationContext.contains(SubscriptionFilterQueryContainer::NAME))
497 {
498 out.putPresent(true);
499
500 const SubscriptionFilterQueryContainer container =
501 operationContext.get(SubscriptionFilterQueryContainer::NAME);
502
503 out.putString(container.getFilterQuery());
504 out.putString(container.getQueryLanguage());
505 out.putString(container.getSourceNameSpace().getString());
506 }
507 else
508 out.putPresent(false);
509 mike 1.1
510 // [SubscriptionInstanceNamesContainer]
511
512 if (operationContext.contains(SubscriptionInstanceNamesContainer::NAME))
513 {
514 out.putPresent(true);
515
516 const SubscriptionInstanceNamesContainer container =
517 operationContext.get(SubscriptionInstanceNamesContainer::NAME);
518
519 out.putObjectPathA(container.getInstanceNames());
520 }
521 else
522 out.putPresent(false);
523
524 // [TimeoutContainer]
525
526 if (operationContext.contains(TimeoutContainer::NAME))
527 {
528 out.putPresent(true);
529
530 mike 1.1 const TimeoutContainer container =
531 operationContext.get(TimeoutContainer::NAME);
532
533 out.putUint32(container.getTimeOut());
534 }
535 else
536 out.putPresent(false);
537
538 // [AcceptLanguageListContainer]
539
540 if (operationContext.contains(AcceptLanguageListContainer::NAME))
541 {
542 out.putPresent(true);
543
544 const AcceptLanguageListContainer container =
545 operationContext.get(AcceptLanguageListContainer::NAME);
546
547 _serializeAcceptLanguageList(out, container.getLanguages());
548 }
549 else
550 out.putPresent(false);
551 mike 1.1
552 // [ContentLanguageListContainer]
553
554 if (operationContext.contains(ContentLanguageListContainer::NAME))
555 {
556 out.putPresent(true);
557
558 const ContentLanguageListContainer container =
559 operationContext.get(ContentLanguageListContainer::NAME);
560
561 _serializeContentLanguageList(out, container.getLanguages());
562 }
563 else
564 out.putPresent(false);
565
566 // [SnmpTrapOidContainer]
567
568 if (operationContext.contains(SnmpTrapOidContainer::NAME))
569 {
570 out.putPresent(true);
571
572 mike 1.1 const SnmpTrapOidContainer container =
573 operationContext.get(SnmpTrapOidContainer::NAME);
574
575 out.putString(container.getSnmpTrapOid());
576 }
577 else
578 out.putPresent(false);
579
580 // [LocaleContainer]
581
582 if (operationContext.contains(LocaleContainer::NAME))
583 {
584 out.putPresent(true);
585
586 const LocaleContainer container =
587 operationContext.get(LocaleContainer::NAME);
588
589 out.putString(container.getLanguageId());
590 }
591 else
592 out.putPresent(false);
593 mike 1.1
594 // [ProviderIdContainer]
595
596 if (operationContext.contains(ProviderIdContainer::NAME))
597 {
598 out.putPresent(true);
599
600 const ProviderIdContainer container =
601 operationContext.get(ProviderIdContainer::NAME);
602
603 _putInstance(out, container.getModule());
604 _putInstance(out, container.getProvider());
605 out.putBoolean(container.isRemoteNameSpace());
606 out.putString(container.getRemoteInfo());
607 out.putString(container.getProvMgrPath());
608 }
609 else
610 out.putPresent(false);
611
612 // [CachedClassDefinitionContainer]
613
614 mike 1.1 if (operationContext.contains(CachedClassDefinitionContainer::NAME))
615 {
616 out.putPresent(true);
617
618 const CachedClassDefinitionContainer container =
619 operationContext.get(CachedClassDefinitionContainer::NAME);
620
621 CIMConstClass ccc = container.getClass();
622 out.putClass(*((CIMClass*)(void*)&ccc));
623 }
624 else
625 out.putPresent(false);
|
626 karl 1.18
|
627 marek 1.17 // [UserRoleContainer]
628
629 if (operationContext.contains(UserRoleContainer::NAME))
630 {
631 out.putPresent(true);
632
633 const UserRoleContainer container =
634 operationContext.get(UserRoleContainer::NAME);
635
636 out.putString(container.getUserRole());
637 }
638 else
639 out.putPresent(false);
640
|
641 mike 1.1 }
642
643 void CIMBinMsgSerializer::_serializeContentLanguageList(
644 CIMBuffer& out,
645 const ContentLanguageList& contentLanguages)
646 {
647 out.putUint32(contentLanguages.size());
648
649 for (Uint32 i = 0; i < contentLanguages.size(); i++)
650 out.putString(contentLanguages.getLanguageTag(i).toString());
651 }
652
653 void CIMBinMsgSerializer::_serializeAcceptLanguageList(
654 CIMBuffer& out,
655 const AcceptLanguageList& acceptLanguages)
656 {
657 out.putUint32(acceptLanguages.size());
658
659 for (Uint32 i = 0; i < acceptLanguages.size(); i++)
660 {
661 out.putString(acceptLanguages.getLanguageTag(i).toString());
662 mike 1.1 out.putReal32(acceptLanguages.getQualityValue(i));
663 }
664 }
665
666 void CIMBinMsgSerializer::_putException(
667 CIMBuffer& out,
668 const CIMException& cimException)
669 {
670 TraceableCIMException e(cimException);
671
672 out.putUint32(Uint32(e.getCode()));
673 out.putString(e.getMessage());
674 out.putString(e.getCIMMessage());
675 out.putString(e.getFile());
676 out.putUint32(e.getLine());
677 _serializeContentLanguageList(out, e.getContentLanguages());
678 }
679
680 void CIMBinMsgSerializer::_putPropertyList(
681 CIMBuffer& out,
682 const CIMPropertyList& cimPropertyList)
683 mike 1.1 {
684 out.putPropertyList(cimPropertyList);
685 }
686
687 void CIMBinMsgSerializer::_putObjectPath(
688 CIMBuffer& out,
689 const CIMObjectPath& cimObjectPath)
690 {
691 out.putObjectPath(cimObjectPath);
692 }
693
694 void CIMBinMsgSerializer::_putInstance(
695 CIMBuffer& out,
696 const CIMInstance& cimInstance)
697 {
698 out.putInstance(cimInstance);
699 }
700
701 void CIMBinMsgSerializer::_putNamespaceName(
702 CIMBuffer& out,
703 const CIMNamespaceName& cimNamespaceName)
704 mike 1.1 {
705 out.putString(cimNamespaceName.getString());
706 }
707
708 void CIMBinMsgSerializer::_putName(
709 CIMBuffer& out,
710 const CIMName& cimName)
711 {
712 out.putString(cimName.getString());
713 }
714
715 void CIMBinMsgSerializer::_putObject(
716 CIMBuffer& out,
717 const CIMObject& object)
718 {
719 if (object.isUninitialized())
720 out.putPresent(false);
721 else
722 {
723 out.putPresent(true);
724 out.putObject(object);
725 mike 1.1 }
726 }
727
728 void CIMBinMsgSerializer::_putParamValue(
729 CIMBuffer& out,
730 const CIMParamValue& paramValue)
731 {
732 out.putParamValue(paramValue);
733 }
734
735 void CIMBinMsgSerializer::_putGetInstanceRequestMessage(
736 CIMBuffer& out,
737 CIMGetInstanceRequestMessage* msg)
738 {
739 _putObjectPath(out, msg->instanceName);
740 out.putBoolean(msg->includeQualifiers);
741 out.putBoolean(msg->includeClassOrigin);
742 _putPropertyList(out, msg->propertyList);
743 }
744
745 void CIMBinMsgSerializer::_putDeleteInstanceRequestMessage(
746 mike 1.1 CIMBuffer& out,
747 CIMDeleteInstanceRequestMessage* msg)
748 {
749 _putObjectPath(out, msg->instanceName);
750 }
751
752 void CIMBinMsgSerializer::_putCreateInstanceRequestMessage(
753 CIMBuffer& out,
754 CIMCreateInstanceRequestMessage* msg)
755 {
756 _putInstance(out, msg->newInstance);
757 }
758
759 void CIMBinMsgSerializer::_putModifyInstanceRequestMessage(
760 CIMBuffer& out,
761 CIMModifyInstanceRequestMessage* msg)
762 {
763 _putInstance(out, msg->modifiedInstance);
764 out.putBoolean(msg->includeQualifiers);
765 _putPropertyList(out, msg->propertyList);
766 }
767 mike 1.1
768 void CIMBinMsgSerializer::_putEnumerateInstancesRequestMessage(
769 CIMBuffer& out,
770 CIMEnumerateInstancesRequestMessage* msg)
771 {
772 out.putBoolean(msg->deepInheritance);
773 out.putBoolean(msg->includeQualifiers);
774 out.putBoolean(msg->includeClassOrigin);
775 _putPropertyList(out, msg->propertyList);
776 }
777
778 void CIMBinMsgSerializer::_putExecQueryRequestMessage(
779 CIMBuffer& out,
780 CIMExecQueryRequestMessage* msg)
781 {
782 out.putString(msg->queryLanguage);
783 out.putString(msg->query);
784 }
785
786 void CIMBinMsgSerializer::_putAssociatorsRequestMessage(
787 CIMBuffer& out,
788 mike 1.1 CIMAssociatorsRequestMessage* msg)
789 {
790 _putObjectPath(out, msg->objectName);
791 _putName(out, msg->assocClass);
792 _putName(out, msg->resultClass);
793 out.putString(msg->role);
794 out.putString(msg->resultRole);
795 out.putBoolean(msg->includeQualifiers);
796 out.putBoolean(msg->includeClassOrigin);
797 _putPropertyList(out, msg->propertyList);
798 }
799
800 void CIMBinMsgSerializer::_putAssociatorNamesRequestMessage(
801 CIMBuffer& out,
802 CIMAssociatorNamesRequestMessage* msg)
803 {
804 _putObjectPath(out, msg->objectName);
805 _putName(out, msg->assocClass);
806 _putName(out, msg->resultClass);
807 out.putString(msg->role);
808 out.putString(msg->resultRole);
809 mike 1.1 }
810
811 void CIMBinMsgSerializer::_putReferencesRequestMessage(
812 CIMBuffer& out,
813 CIMReferencesRequestMessage* msg)
814 {
815 _putObjectPath(out, msg->objectName);
816 _putName(out, msg->resultClass);
817 out.putString(msg->role);
818 out.putBoolean(msg->includeQualifiers);
819 out.putBoolean(msg->includeClassOrigin);
820 _putPropertyList(out, msg->propertyList);
821 }
822
823 void CIMBinMsgSerializer::_putReferenceNamesRequestMessage(
824 CIMBuffer& out,
825 CIMReferenceNamesRequestMessage* msg)
826 {
827 _putObjectPath(out, msg->objectName);
828 _putName(out, msg->resultClass);
829 out.putString(msg->role);
830 mike 1.1 }
831
832 void CIMBinMsgSerializer::_putGetPropertyRequestMessage(
833 CIMBuffer& out,
834 CIMGetPropertyRequestMessage* msg)
835 {
836 _putObjectPath(out, msg->instanceName);
837 _putName(out, msg->propertyName);
838 }
839
840 void CIMBinMsgSerializer::_putSetPropertyRequestMessage(
841 CIMBuffer& out,
842 CIMSetPropertyRequestMessage* msg)
843 {
844 _putObjectPath(out, msg->instanceName);
845
846 _putParamValue(out,
847 CIMParamValue(msg->propertyName.getString(), msg->newValue, true));
848 }
849
850 void CIMBinMsgSerializer::_putInvokeMethodRequestMessage(
851 mike 1.1 CIMBuffer& out,
852 CIMInvokeMethodRequestMessage* msg)
853 {
854 _putObjectPath(out, msg->instanceName);
855 _putName(out, msg->methodName);
856 out.putParamValueA(msg->inParameters);
857 }
858
859 void CIMBinMsgSerializer::_putCreateSubscriptionRequestMessage(
860 CIMBuffer& out,
861 CIMCreateSubscriptionRequestMessage* msg)
862 {
863 _putNamespaceName(out, msg->nameSpace);
864 _putInstance(out, msg->subscriptionInstance);
865 out.putNameA(msg->classNames);
866 _putPropertyList(out, msg->propertyList);
867 out.putUint16(msg->repeatNotificationPolicy);
868 out.putString(msg->query);
869 }
870
871 void CIMBinMsgSerializer::_putModifySubscriptionRequestMessage(
872 mike 1.1 CIMBuffer& out,
873 CIMModifySubscriptionRequestMessage* msg)
874 {
875 _putNamespaceName(out, msg->nameSpace);
876 _putInstance(out, msg->subscriptionInstance);
877 out.putNameA(msg->classNames);
878 _putPropertyList(out, msg->propertyList);
879 out.putUint16(msg->repeatNotificationPolicy);
880 out.putString(msg->query);
881 }
882
883 void CIMBinMsgSerializer::_putDeleteSubscriptionRequestMessage(
884 CIMBuffer& out,
885 CIMDeleteSubscriptionRequestMessage* msg)
886 {
887 _putNamespaceName(out, msg->nameSpace);
888 _putInstance(out, msg->subscriptionInstance);
889 out.putNameA(msg->classNames);
890 }
891
892 void CIMBinMsgSerializer::_putExportIndicationRequestMessage(
893 mike 1.1 CIMBuffer& out,
894 CIMExportIndicationRequestMessage* msg)
895 {
896 _serializeUserInfo(out, msg->authType, msg->userName);
897 out.putString(msg->destinationPath);
898 _putInstance(out, msg->indicationInstance);
899 }
900
901 void CIMBinMsgSerializer::_putProcessIndicationRequestMessage(
902 CIMBuffer& out,
903 CIMProcessIndicationRequestMessage* msg)
904 {
905 _putNamespaceName(out, msg->nameSpace);
906 _putInstance(out, msg->indicationInstance);
907 out.putObjectPathA(msg->subscriptionInstanceNames);
908 _putInstance(out, msg->provider);
|
909 venkat.puvvada 1.15 out.putUint32(msg->timeoutMilliSec);
|
910 mike 1.1 }
911
912 void CIMBinMsgSerializer::_putDisableModuleRequestMessage(
913 CIMBuffer& out,
914 CIMDisableModuleRequestMessage* msg)
915 {
916 _serializeUserInfo(out, msg->authType, msg->userName);
917 _putInstance(out, msg->providerModule);
918 out.putInstanceA(msg->providers);
919 out.putBoolean(msg->disableProviderOnly);
920 out.putBooleanA(msg->indicationProviders);
921 }
922
923 void CIMBinMsgSerializer::_putEnableModuleRequestMessage(
924 CIMBuffer& out,
925 CIMEnableModuleRequestMessage* msg)
926 {
927 _serializeUserInfo(out, msg->authType, msg->userName);
928 _putInstance(out, msg->providerModule);
929 }
930
931 mike 1.1 void CIMBinMsgSerializer::_putInitializeProviderAgentRequestMessage(
932 CIMBuffer& out,
933 CIMInitializeProviderAgentRequestMessage* msg)
934 {
935 out.putString(msg->pegasusHome);
936 out.putUint32(msg->configProperties.size());
937
938 for (Uint32 i = 0; i < msg->configProperties.size(); i++)
939 {
940 out.putString(msg->configProperties[i].first);
941 out.putString(msg->configProperties[i].second);
942 }
943
944 out.putBoolean(msg->bindVerbose);
945 out.putBoolean(msg->subscriptionInitComplete);
946 }
947
948 void CIMBinMsgSerializer::_putNotifyConfigChangeRequestMessage(
949 CIMBuffer& out,
950 CIMNotifyConfigChangeRequestMessage* msg)
951 {
952 mike 1.1 out.putString(msg->propertyName);
953 out.putString(msg->newPropertyValue);
954 out.putBoolean(msg->currentValueModified);
955 }
956
|
957 thilo.boehm 1.9 void CIMBinMsgSerializer::_putProvAgtGetScmoClassRequestMessage(
958 CIMBuffer& out,
959 ProvAgtGetScmoClassRequestMessage* msg)
960 {
|
961 venkat.puvvada 1.13 out.putString(msg->messageId);
|
962 thilo.boehm 1.9 out.putNamespaceName(msg->nameSpace);
|
963 karl 1.18 out.putName(msg->className);
|
964 thilo.boehm 1.9 }
965
|
966 venkat.puvvada 1.14 void CIMBinMsgSerializer::_putStopAllProvidersRequestMessage(
967 CIMBuffer& out,
968 CIMStopAllProvidersRequestMessage *msg)
969 {
970 out.putUint32(msg->shutdownTimeout);
971 }
|
972 thilo.boehm 1.9
|
973 mike 1.1 void CIMBinMsgSerializer::_putGetInstanceResponseMessage(
974 CIMBuffer& out,
975 CIMGetInstanceResponseMessage* msg)
976 {
|
977 mike 1.2 if (msg->binaryResponse)
978 {
979 CIMBuffer data(4096);
|
980 thilo.boehm 1.9 msg->getResponseData().encodeBinaryResponse(data);
|
981 karl 1.12 out.putUint32((Uint32)data.size());
|
982 mike 1.2 out.putBytes(data.getData(), data.size());
983 }
984 else
985 {
|
986 thilo.boehm 1.9 msg->getResponseData().encodeInternalXmlResponse(out);
|
987 mike 1.2 }
|
988 mike 1.1 }
989
990 void CIMBinMsgSerializer::_putCreateInstanceResponseMessage(
991 CIMBuffer& out,
992 CIMCreateInstanceResponseMessage* msg)
993 {
994 _putObjectPath(out, msg->instanceName);
995 }
996
997 void CIMBinMsgSerializer::_putEnumerateInstancesResponseMessage(
998 CIMBuffer& out,
999 CIMEnumerateInstancesResponseMessage* msg)
1000 {
|
1001 mike 1.2 if (msg->binaryResponse)
|
1002 mike 1.1 {
|
1003 mike 1.2 CIMBuffer data(16 * 4096);
|
1004 thilo.boehm 1.9 msg->getResponseData().encodeBinaryResponse(data);
|
1005 karl 1.12 out.putUint32((Uint32)data.size());
|
1006 mike 1.2 out.putBytes(data.getData(), data.size());
|
1007 mike 1.1 }
|
1008 mike 1.2 else
1009 {
|
1010 thilo.boehm 1.9 msg->getResponseData().encodeInternalXmlResponse(out);
|
1011 mike 1.2 }
|
1012 mike 1.1 }
1013
1014 void CIMBinMsgSerializer::_putEnumerateInstanceNamesResponseMessage(
1015 CIMBuffer& out,
1016 CIMEnumerateInstanceNamesResponseMessage* msg)
1017 {
|
1018 thilo.boehm 1.9 CIMBuffer data(16 * 4096);
1019 msg->getResponseData().encodeBinaryResponse(data);
|
1020 karl 1.12 out.putUint32((Uint32)data.size());
|
1021 thilo.boehm 1.9 out.putBytes(data.getData(), data.size());
|
1022 mike 1.1 }
1023
1024 void CIMBinMsgSerializer::_putExecQueryResponseMessage(
1025 CIMBuffer& out,
1026 CIMExecQueryResponseMessage* msg)
1027 {
|
1028 r.kieninger 1.8 if (msg->binaryResponse)
1029 {
1030 CIMBuffer data(16 * 4096);
|
1031 thilo.boehm 1.9 msg->getResponseData().encodeBinaryResponse(data);
|
1032 karl 1.12 out.putUint32((Uint32)data.size());
|
1033 r.kieninger 1.8 out.putBytes(data.getData(), data.size());
1034 }
1035 else
1036 {
|
1037 thilo.boehm 1.9 msg->getResponseData().encodeInternalXmlResponse(out);
|
1038 r.kieninger 1.8 }
|
1039 mike 1.1 }
1040
1041 void CIMBinMsgSerializer::_putAssociatorsResponseMessage(
1042 CIMBuffer& out,
1043 CIMAssociatorsResponseMessage* msg)
1044 {
|
1045 r.kieninger 1.8 if (msg->binaryResponse)
1046 {
1047 CIMBuffer data(16 * 4096);
|
1048 thilo.boehm 1.9 msg->getResponseData().encodeBinaryResponse(data);
|
1049 karl 1.12 out.putUint32((Uint32)data.size());
|
1050 r.kieninger 1.8 out.putBytes(data.getData(), data.size());
1051 }
1052 else
1053 {
|
1054 karl 1.19 msg->getResponseData().encodeInternalXmlResponse(out,
1055 msg->internalOperation);
|
1056 r.kieninger 1.8 }
|
1057 mike 1.1 }
1058
1059 void CIMBinMsgSerializer::_putAssociatorNamesResponseMessage(
1060 CIMBuffer& out,
1061 CIMAssociatorNamesResponseMessage* msg)
1062 {
|
1063 thilo.boehm 1.9 CIMBuffer data(16 * 4096);
1064 msg->getResponseData().encodeBinaryResponse(data);
|
1065 karl 1.12 out.putUint32((Uint32)data.size());
|
1066 thilo.boehm 1.9 out.putBytes(data.getData(), data.size());
|
1067 mike 1.1 }
1068
1069 void CIMBinMsgSerializer::_putReferencesResponseMessage(
1070 CIMBuffer& out,
1071 CIMReferencesResponseMessage* msg)
1072 {
|
1073 venkat.puvvada 1.11 if (msg->binaryResponse)
1074 {
1075 CIMBuffer data(16 * 4096);
1076 msg->getResponseData().encodeBinaryResponse(data);
|
1077 karl 1.12 out.putUint32((Uint32)data.size());
|
1078 venkat.puvvada 1.11 out.putBytes(data.getData(), data.size());
1079 }
1080 else
1081 {
|
1082 karl 1.19 msg->getResponseData().encodeInternalXmlResponse(out,
1083 msg->internalOperation);
|
1084 venkat.puvvada 1.11 }
|
1085 mike 1.1 }
1086
1087 void CIMBinMsgSerializer::_putReferenceNamesResponseMessage(
1088 CIMBuffer& out,
1089 CIMReferenceNamesResponseMessage* msg)
1090 {
|
1091 thilo.boehm 1.9 CIMBuffer data(16 * 4096);
1092 msg->getResponseData().encodeBinaryResponse(data);
|
1093 karl 1.12 out.putUint32((Uint32)data.size());
|
1094 thilo.boehm 1.9 out.putBytes(data.getData(), data.size());
|
1095 mike 1.1 }
1096
1097 void CIMBinMsgSerializer::_putGetPropertyResponseMessage(
1098 CIMBuffer& out,
1099 CIMGetPropertyResponseMessage* msg)
1100 {
|
1101 kumpf 1.5 _putParamValue(out, CIMParamValue(String("ignore"),
|
1102 mike 1.1 msg->value, true));
1103 }
1104
1105 void CIMBinMsgSerializer::_putInvokeMethodResponseMessage(
1106 CIMBuffer& out,
1107 CIMInvokeMethodResponseMessage* msg)
1108 {
1109 _putParamValue(out,
1110 CIMParamValue(String("ignore"), msg->retValue, true));
1111 out.putParamValueA(msg->outParameters);
1112 _putName(out, msg->methodName);
1113 }
1114
1115 void CIMBinMsgSerializer::_putDisableModuleResponseMessage(
1116 CIMBuffer& out,
1117 CIMDisableModuleResponseMessage* msg)
1118 {
1119 out.putUint16A(msg->operationalStatus);
1120 }
1121
1122 void CIMBinMsgSerializer::_putEnableModuleResponseMessage(
1123 mike 1.1 CIMBuffer& out,
1124 CIMEnableModuleResponseMessage* msg)
1125 {
1126 out.putUint16A(msg->operationalStatus);
1127 }
1128
|
1129 thilo.boehm 1.9 void CIMBinMsgSerializer::_putProvAgtGetScmoClassResponseMessage(
1130 CIMBuffer& out,
1131 ProvAgtGetScmoClassResponseMessage* msg)
1132 {
|
1133 venkat.puvvada 1.13 out.putString(msg->messageId);
|
1134 thilo.boehm 1.9 out.putSCMOClass(msg->scmoClass);
1135 }
1136
1137
|
1138 mike 1.1 PEGASUS_NAMESPACE_END
|