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