1 kumpf 1.1 //%2003////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Development
4 // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
6 // IBM Corp.; EMC Corporation, The Open Group.
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a copy
9 // of this software and associated documentation files (the "Software"), to
10 // deal in the Software without restriction, including without limitation the
11 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12 // sell copies of the Software, and to permit persons to whom the Software is
13 // furnished to do so, subject to the following conditions:
14 //
15 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
16 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
17 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
18 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
19 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 kumpf 1.1 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 //
24 //==============================================================================
25 //
26 // Author: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
27 //
28 // Modified By:
29 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_CIMMessageSerializer_h
33 #define Pegasus_CIMMessageSerializer_h
34
35 #include <Pegasus/Common/Config.h>
36 #include <Pegasus/Common/CIMMessage.h>
37
38 PEGASUS_NAMESPACE_BEGIN
39
40 /**
41 CIMMessageSerializer provides a mechanism to convert a CIMMessage (or one
42 of its subclasses) to a stream of bytes. This stream of bytes can be
43 kumpf 1.1 converted back to a CIMMessage object through use of the related
44 CIMMessageDeserializer class.
45
46 The format of the serialized message is not defined and is therefore
47 subject to change. The only requirement is that the CIMMessageSerializer
48 and CIMMessageDeserializer classes remain in sync to provide a two-way
49 mapping. (A quasi-XML encoding is currently used as an expedient
50 solution. However, this encoding is not compliant with the CIM-XML
51 specification. A number of shortcuts have been taken to improve
52 operational efficiency.)
53
54 Note: Changes or additions to the CIMMessage definitions must be
55 reflected in these serialization classes. Likewise, changes to the
56 structure of member data (such as the AcceptLanguages class) and
57 addition of new OperationContext containers will affect message
58 serialization.
59 */
60 class PEGASUS_COMMON_LINKAGE CIMMessageSerializer
61 {
62 public:
63
64 kumpf 1.1 static void serialize(Array<Sint8>& out, CIMMessage* cimMessage);
65
66 private:
67
68 static void _serializeCIMRequestMessage(
69 Array<Sint8>& out,
70 CIMRequestMessage* cimMessage);
71
72 static void _serializeCIMResponseMessage(
73 Array<Sint8>& out,
74 CIMResponseMessage* cimMessage);
75
76 //
77 // Utility Methods
78 //
79
80 static void _serializeUserInfo(
81 Array<Sint8>& out,
82 const String& authType,
83 const String& userName);
84
85 kumpf 1.1 static void _serializeQueueIdStack(
86 Array<Sint8>& out,
87 const QueueIdStack& queueIdStack);
88
89 static void _serializeOperationContext(
90 Array<Sint8>& out,
91 const OperationContext& operationContext);
92
93 static void _serializeContentLanguages(
94 Array<Sint8>& out,
95 const ContentLanguages& contentLanguages);
96
97 static void _serializeAcceptLanguages(
98 Array<Sint8>& out,
99 const AcceptLanguages& acceptLanguages);
100
101 static void _serializeCIMException(
102 Array<Sint8>& out,
103 const CIMException& cimException);
104
105 static void _serializeCIMPropertyList(
106 kumpf 1.1 Array<Sint8>& out,
107 const CIMPropertyList& cimPropertyList);
108
109 static void _serializeCIMObjectPath(
110 Array<Sint8>& out,
111 const CIMObjectPath& cimObjectPath);
112
113 static void _serializeCIMInstance(
114 Array<Sint8>& out,
115 const CIMInstance& cimInstance);
116
117 static void _serializeCIMNamespaceName(
118 Array<Sint8>& out,
119 const CIMNamespaceName& cimNamespaceName);
120
121 static void _serializeCIMName(
122 Array<Sint8>& out,
123 const CIMName& cimName);
124
125 //
126 //
127 kumpf 1.1 // CIM Request Messages
128 //
129 //
130
131 //
132 // CIMOperationRequestMessages
133 //
134
135 static void _serializeCIMGetInstanceRequestMessage(
136 Array<Sint8>& out,
137 CIMGetInstanceRequestMessage* message);
138
139 static void _serializeCIMDeleteInstanceRequestMessage(
140 Array<Sint8>& out,
141 CIMDeleteInstanceRequestMessage* message);
142
143 static void _serializeCIMCreateInstanceRequestMessage(
144 Array<Sint8>& out,
145 CIMCreateInstanceRequestMessage* message);
146
147 static void _serializeCIMModifyInstanceRequestMessage(
148 kumpf 1.1 Array<Sint8>& out,
149 CIMModifyInstanceRequestMessage* message);
150
151 static void _serializeCIMEnumerateInstancesRequestMessage(
152 Array<Sint8>& out,
153 CIMEnumerateInstancesRequestMessage* message);
154
155 static void _serializeCIMEnumerateInstanceNamesRequestMessage(
156 Array<Sint8>& out,
157 CIMEnumerateInstanceNamesRequestMessage* message);
158
159 static void _serializeCIMExecQueryRequestMessage(
160 Array<Sint8>& out,
161 CIMExecQueryRequestMessage* message);
162
163 static void _serializeCIMAssociatorsRequestMessage(
164 Array<Sint8>& out,
165 CIMAssociatorsRequestMessage* message);
166
167 static void _serializeCIMAssociatorNamesRequestMessage(
168 Array<Sint8>& out,
169 kumpf 1.1 CIMAssociatorNamesRequestMessage* message);
170
171 static void _serializeCIMReferencesRequestMessage(
172 Array<Sint8>& out,
173 CIMReferencesRequestMessage* message);
174
175 static void _serializeCIMReferenceNamesRequestMessage(
176 Array<Sint8>& out,
177 CIMReferenceNamesRequestMessage* message);
178
179 static void _serializeCIMGetPropertyRequestMessage(
180 Array<Sint8>& out,
181 CIMGetPropertyRequestMessage* message);
182
183 static void _serializeCIMSetPropertyRequestMessage(
184 Array<Sint8>& out,
185 CIMSetPropertyRequestMessage* message);
186
187 static void _serializeCIMInvokeMethodRequestMessage(
188 Array<Sint8>& out,
189 CIMInvokeMethodRequestMessage* message);
190 kumpf 1.1
191 //
192 // CIMIndicationRequestMessages
193 //
194
195 static void _serializeCIMEnableIndicationsRequestMessage(
196 Array<Sint8>& out,
197 CIMEnableIndicationsRequestMessage* message);
198
199 static void _serializeCIMDisableIndicationsRequestMessage(
200 Array<Sint8>& out,
201 CIMDisableIndicationsRequestMessage* message);
202
203 static void _serializeCIMCreateSubscriptionRequestMessage(
204 Array<Sint8>& out,
205 CIMCreateSubscriptionRequestMessage* message);
206
207 static void _serializeCIMModifySubscriptionRequestMessage(
208 Array<Sint8>& out,
209 CIMModifySubscriptionRequestMessage* message);
210
211 kumpf 1.1 static void _serializeCIMDeleteSubscriptionRequestMessage(
212 Array<Sint8>& out,
213 CIMDeleteSubscriptionRequestMessage* message);
214
215 //
216 // Generic CIMRequestMessages
217 //
218
219 static void _serializeCIMExportIndicationRequestMessage(
220 Array<Sint8>& out,
221 CIMExportIndicationRequestMessage* message);
222
223 static void _serializeCIMProcessIndicationRequestMessage(
224 Array<Sint8>& out,
225 CIMProcessIndicationRequestMessage* message);
226
227 static void _serializeCIMConsumeIndicationRequestMessage(
228 Array<Sint8>& out,
229 CIMConsumeIndicationRequestMessage* message);
230
231 static void _serializeCIMDisableModuleRequestMessage(
232 kumpf 1.1 Array<Sint8>& out,
233 CIMDisableModuleRequestMessage* message);
234
235 static void _serializeCIMEnableModuleRequestMessage(
236 Array<Sint8>& out,
237 CIMEnableModuleRequestMessage* message);
238
239 static void _serializeCIMStopAllProvidersRequestMessage(
240 Array<Sint8>& out,
241 CIMStopAllProvidersRequestMessage* message);
242
243 //
244 //
245 // CIM Response Messages
246 //
247 //
248
249 //
250 // CIMOperationResponseMessages
251 //
252
253 kumpf 1.1 static void _serializeCIMGetInstanceResponseMessage(
254 Array<Sint8>& out,
255 CIMGetInstanceResponseMessage* message);
256
257 static void _serializeCIMDeleteInstanceResponseMessage(
258 Array<Sint8>& out,
259 CIMDeleteInstanceResponseMessage* message);
260
261 static void _serializeCIMCreateInstanceResponseMessage(
262 Array<Sint8>& out,
263 CIMCreateInstanceResponseMessage* message);
264
265 static void _serializeCIMModifyInstanceResponseMessage(
266 Array<Sint8>& out,
267 CIMModifyInstanceResponseMessage* message);
268
269 static void _serializeCIMEnumerateInstancesResponseMessage(
270 Array<Sint8>& out,
271 CIMEnumerateInstancesResponseMessage* message);
272
273 static void _serializeCIMEnumerateInstanceNamesResponseMessage(
274 kumpf 1.1 Array<Sint8>& out,
275 CIMEnumerateInstanceNamesResponseMessage* message);
276
277 static void _serializeCIMExecQueryResponseMessage(
278 Array<Sint8>& out,
279 CIMExecQueryResponseMessage* message);
280
281 static void _serializeCIMAssociatorsResponseMessage(
282 Array<Sint8>& out,
283 CIMAssociatorsResponseMessage* message);
284
285 static void _serializeCIMAssociatorNamesResponseMessage(
286 Array<Sint8>& out,
287 CIMAssociatorNamesResponseMessage* message);
288
289 static void _serializeCIMReferencesResponseMessage(
290 Array<Sint8>& out,
291 CIMReferencesResponseMessage* message);
292
293 static void _serializeCIMReferenceNamesResponseMessage(
294 Array<Sint8>& out,
295 kumpf 1.1 CIMReferenceNamesResponseMessage* message);
296
297 static void _serializeCIMGetPropertyResponseMessage(
298 Array<Sint8>& out,
299 CIMGetPropertyResponseMessage* message);
300
301 static void _serializeCIMSetPropertyResponseMessage(
302 Array<Sint8>& out,
303 CIMSetPropertyResponseMessage* message);
304
305 static void _serializeCIMInvokeMethodResponseMessage(
306 Array<Sint8>& out,
307 CIMInvokeMethodResponseMessage* message);
308
309 //
310 // CIMIndicationResponseMessages
311 //
312
313 static void _serializeCIMEnableIndicationsResponseMessage(
314 Array<Sint8>& out,
315 CIMEnableIndicationsResponseMessage* message);
316 kumpf 1.1
317 static void _serializeCIMDisableIndicationsResponseMessage(
318 Array<Sint8>& out,
319 CIMDisableIndicationsResponseMessage* message);
320
321 static void _serializeCIMCreateSubscriptionResponseMessage(
322 Array<Sint8>& out,
323 CIMCreateSubscriptionResponseMessage* message);
324
325 static void _serializeCIMModifySubscriptionResponseMessage(
326 Array<Sint8>& out,
327 CIMModifySubscriptionResponseMessage* message);
328
329 static void _serializeCIMDeleteSubscriptionResponseMessage(
330 Array<Sint8>& out,
331 CIMDeleteSubscriptionResponseMessage* message);
332
333 //
334 // Generic CIMResponseMessages
335 //
336
337 kumpf 1.1 static void _serializeCIMExportIndicationResponseMessage(
338 Array<Sint8>& out,
339 CIMExportIndicationResponseMessage* message);
340
341 static void _serializeCIMProcessIndicationResponseMessage(
342 Array<Sint8>& out,
343 CIMProcessIndicationResponseMessage* message);
344
345 #if 0 // ATTN: This message type is currently not defined
346 static void _serializeCIMConsumeIndicationResponseMessage(
347 Array<Sint8>& out,
348 CIMConsumeIndicationResponseMessage* message);
349 #endif
350
351 static void _serializeCIMDisableModuleResponseMessage(
352 Array<Sint8>& out,
353 CIMDisableModuleResponseMessage* message);
354
355 static void _serializeCIMEnableModuleResponseMessage(
356 Array<Sint8>& out,
357 CIMEnableModuleResponseMessage* message);
358 kumpf 1.1
359 static void _serializeCIMStopAllProvidersResponseMessage(
360 Array<Sint8>& out,
361 CIMStopAllProvidersResponseMessage* message);
362
363 };
364
365 PEGASUS_NAMESPACE_END
366
367 #endif /* Pegasus_CIMMessageSerializer_h */
|