rubywmq 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -1,1609 +0,0 @@
1
-
2
- /* --------------------------------------------------------------------------
3
- * Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- * --------------------------------------------------------------------------
17
- *
18
- * WARNING: DO NOT MODIFY THIS FILE
19
- *
20
- * This file was generated by generate_structs.rb.
21
- *
22
- * --------------------------------------------------------------------------*/
23
-
24
- #include "wmq.h"
25
-
26
- /* --------------------------------------------------------------------------
27
- * Static's to hold Symbols
28
- * --------------------------------------------------------------------------*/
29
- static ID ID_abend_code;
30
- static ID ID_accounting_token;
31
- static ID ID_ads_descriptor;
32
- static ID ID_appl_id;
33
- static ID ID_appl_identity_data;
34
- static ID ID_appl_origin_data;
35
- static ID ID_appl_type;
36
- static ID ID_attention_id;
37
- static ID ID_authenticator;
38
- static ID ID_backout_count;
39
- static ID ID_cancel_code;
40
- static ID ID_cics;
41
- static ID ID_coded_char_set_id;
42
- static ID ID_commit_mode;
43
- static ID ID_comp_code;
44
- static ID ID_conversational_task;
45
- static ID ID_correl_id;
46
- static ID ID_cursor_position;
47
- static ID ID_data_set;
48
- static ID ID_data_logical_length;
49
- static ID ID_data_logical_offset;
50
- static ID ID_data_logical_offset2;
51
- static ID ID_dead_letter_header;
52
- static ID ID_descriptor_set;
53
- static ID ID_dest_env_length;
54
- static ID ID_dest_env_offset;
55
- static ID ID_dest_name_length;
56
- static ID ID_dest_name_offset;
57
- static ID ID_dest_q_mgr_name;
58
- static ID ID_dest_q_name;
59
- static ID ID_dist_header;
60
- static ID ID_encoding;
61
- static ID ID_env_data;
62
- static ID ID_error_offset;
63
- static ID ID_expiry;
64
- static ID ID_facility;
65
- static ID ID_facility_keep_time;
66
- static ID ID_facility_like;
67
- static ID ID_feedback;
68
- static ID ID_flags;
69
- static ID ID_format;
70
- static ID ID_function;
71
- static ID ID_get_wait_interval;
72
- static ID ID_group_id;
73
- static ID ID_header_type;
74
- static ID ID_headers_set;
75
- static ID ID_ims;
76
- static ID ID_input_item;
77
- static ID ID_l_term_override;
78
- static ID ID_link_type;
79
- static ID ID_mfs_map_name;
80
- static ID ID_msg_desc;
81
- static ID ID_msg_flags;
82
- static ID ID_msg_id;
83
- static ID ID_msg_seq_number;
84
- static ID ID_msg_token;
85
- static ID ID_msg_type;
86
- static ID ID_name_value;
87
- static ID ID_name_value_ccsid;
88
- static ID ID_next_transaction_id;
89
- static ID ID_object_instance_id;
90
- static ID ID_object_rec_offset;
91
- static ID ID_object_type;
92
- static ID ID_offset;
93
- static ID ID_original_length;
94
- static ID ID_output_data_length;
95
- static ID ID_persistence;
96
- static ID ID_priority;
97
- static ID ID_process_name;
98
- static ID ID_put_appl_name;
99
- static ID ID_put_appl_type;
100
- static ID ID_put_date;
101
- static ID ID_put_msg_rec_fields;
102
- static ID ID_put_msg_rec_offset;
103
- static ID ID_put_time;
104
- static ID ID_q_mgr_name;
105
- static ID ID_q_name;
106
- static ID ID_reason;
107
- static ID ID_recs_present;
108
- static ID ID_ref_msg_header;
109
- static ID ID_remote_q_mgr_name;
110
- static ID ID_remote_q_name;
111
- static ID ID_remote_sys_id;
112
- static ID ID_remote_trans_id;
113
- static ID ID_reply_to_format;
114
- static ID ID_reply_to_q;
115
- static ID ID_reply_to_q_mgr;
116
- static ID ID_report;
117
- static ID ID_reserved;
118
- static ID ID_reserved1;
119
- static ID ID_reserved2;
120
- static ID ID_reserved3;
121
- static ID ID_reserved4;
122
- static ID ID_return_code;
123
- static ID ID_rf_header;
124
- static ID ID_rf_header_2;
125
- static ID ID_security_scope;
126
- static ID ID_service_name;
127
- static ID ID_service_step;
128
- static ID ID_src_env_length;
129
- static ID ID_src_env_offset;
130
- static ID ID_src_name_length;
131
- static ID ID_src_name_offset;
132
- static ID ID_start_code;
133
- static ID ID_task_end_status;
134
- static ID ID_to_s;
135
- static ID ID_tran_instance_id;
136
- static ID ID_tran_state;
137
- static ID ID_transaction_id;
138
- static ID ID_trigger;
139
- static ID ID_trigger_data;
140
- static ID ID_uow_control;
141
- static ID ID_user_data;
142
- static ID ID_user_identifier;
143
- static ID ID_work_info_header;
144
- static ID ID_xmit_q_header;
145
- static ID ID_xml;
146
-
147
- /* --------------------------------------------------------------------------
148
- * Initialize Symbols
149
- * --------------------------------------------------------------------------*/
150
- void wmq_structs_id_init()
151
- {
152
- ID_abend_code = rb_intern("abend_code");
153
- ID_accounting_token = rb_intern("accounting_token");
154
- ID_ads_descriptor = rb_intern("ads_descriptor");
155
- ID_appl_id = rb_intern("appl_id");
156
- ID_appl_identity_data = rb_intern("appl_identity_data");
157
- ID_appl_origin_data = rb_intern("appl_origin_data");
158
- ID_appl_type = rb_intern("appl_type");
159
- ID_attention_id = rb_intern("attention_id");
160
- ID_authenticator = rb_intern("authenticator");
161
- ID_backout_count = rb_intern("backout_count");
162
- ID_cancel_code = rb_intern("cancel_code");
163
- ID_cics = rb_intern("cics");
164
- ID_coded_char_set_id = rb_intern("coded_char_set_id");
165
- ID_commit_mode = rb_intern("commit_mode");
166
- ID_comp_code = rb_intern("comp_code");
167
- ID_conversational_task = rb_intern("conversational_task");
168
- ID_correl_id = rb_intern("correl_id");
169
- ID_cursor_position = rb_intern("cursor_position");
170
- ID_data_set = rb_intern("data=");
171
- ID_data_logical_length = rb_intern("data_logical_length");
172
- ID_data_logical_offset = rb_intern("data_logical_offset");
173
- ID_data_logical_offset2 = rb_intern("data_logical_offset2");
174
- ID_dead_letter_header = rb_intern("dead_letter_header");
175
- ID_descriptor_set = rb_intern("descriptor=");
176
- ID_dest_env_length = rb_intern("dest_env_length");
177
- ID_dest_env_offset = rb_intern("dest_env_offset");
178
- ID_dest_name_length = rb_intern("dest_name_length");
179
- ID_dest_name_offset = rb_intern("dest_name_offset");
180
- ID_dest_q_mgr_name = rb_intern("dest_q_mgr_name");
181
- ID_dest_q_name = rb_intern("dest_q_name");
182
- ID_dist_header = rb_intern("dist_header");
183
- ID_encoding = rb_intern("encoding");
184
- ID_env_data = rb_intern("env_data");
185
- ID_error_offset = rb_intern("error_offset");
186
- ID_expiry = rb_intern("expiry");
187
- ID_facility = rb_intern("facility");
188
- ID_facility_keep_time = rb_intern("facility_keep_time");
189
- ID_facility_like = rb_intern("facility_like");
190
- ID_feedback = rb_intern("feedback");
191
- ID_flags = rb_intern("flags");
192
- ID_format = rb_intern("format");
193
- ID_function = rb_intern("function");
194
- ID_get_wait_interval = rb_intern("get_wait_interval");
195
- ID_group_id = rb_intern("group_id");
196
- ID_header_type = rb_intern("header_type");
197
- ID_headers_set = rb_intern("headers=");
198
- ID_ims = rb_intern("ims");
199
- ID_input_item = rb_intern("input_item");
200
- ID_l_term_override = rb_intern("l_term_override");
201
- ID_link_type = rb_intern("link_type");
202
- ID_mfs_map_name = rb_intern("mfs_map_name");
203
- ID_msg_desc = rb_intern("msg_desc");
204
- ID_msg_flags = rb_intern("msg_flags");
205
- ID_msg_id = rb_intern("msg_id");
206
- ID_msg_seq_number = rb_intern("msg_seq_number");
207
- ID_msg_token = rb_intern("msg_token");
208
- ID_msg_type = rb_intern("msg_type");
209
- ID_name_value = rb_intern("name_value");
210
- ID_name_value_ccsid = rb_intern("name_value_ccsid");
211
- ID_next_transaction_id = rb_intern("next_transaction_id");
212
- ID_object_instance_id = rb_intern("object_instance_id");
213
- ID_object_rec_offset = rb_intern("object_rec_offset");
214
- ID_object_type = rb_intern("object_type");
215
- ID_offset = rb_intern("offset");
216
- ID_original_length = rb_intern("original_length");
217
- ID_output_data_length = rb_intern("output_data_length");
218
- ID_persistence = rb_intern("persistence");
219
- ID_priority = rb_intern("priority");
220
- ID_process_name = rb_intern("process_name");
221
- ID_put_appl_name = rb_intern("put_appl_name");
222
- ID_put_appl_type = rb_intern("put_appl_type");
223
- ID_put_date = rb_intern("put_date");
224
- ID_put_msg_rec_fields = rb_intern("put_msg_rec_fields");
225
- ID_put_msg_rec_offset = rb_intern("put_msg_rec_offset");
226
- ID_put_time = rb_intern("put_time");
227
- ID_q_mgr_name = rb_intern("q_mgr_name");
228
- ID_q_name = rb_intern("q_name");
229
- ID_reason = rb_intern("reason");
230
- ID_recs_present = rb_intern("recs_present");
231
- ID_ref_msg_header = rb_intern("ref_msg_header");
232
- ID_remote_q_mgr_name = rb_intern("remote_q_mgr_name");
233
- ID_remote_q_name = rb_intern("remote_q_name");
234
- ID_remote_sys_id = rb_intern("remote_sys_id");
235
- ID_remote_trans_id = rb_intern("remote_trans_id");
236
- ID_reply_to_format = rb_intern("reply_to_format");
237
- ID_reply_to_q = rb_intern("reply_to_q");
238
- ID_reply_to_q_mgr = rb_intern("reply_to_q_mgr");
239
- ID_report = rb_intern("report");
240
- ID_reserved = rb_intern("reserved");
241
- ID_reserved1 = rb_intern("reserved1");
242
- ID_reserved2 = rb_intern("reserved2");
243
- ID_reserved3 = rb_intern("reserved3");
244
- ID_reserved4 = rb_intern("reserved4");
245
- ID_return_code = rb_intern("return_code");
246
- ID_rf_header = rb_intern("rf_header");
247
- ID_rf_header_2 = rb_intern("rf_header_2");
248
- ID_security_scope = rb_intern("security_scope");
249
- ID_service_name = rb_intern("service_name");
250
- ID_service_step = rb_intern("service_step");
251
- ID_src_env_length = rb_intern("src_env_length");
252
- ID_src_env_offset = rb_intern("src_env_offset");
253
- ID_src_name_length = rb_intern("src_name_length");
254
- ID_src_name_offset = rb_intern("src_name_offset");
255
- ID_start_code = rb_intern("start_code");
256
- ID_task_end_status = rb_intern("task_end_status");
257
- ID_to_s = rb_intern("to_s");
258
- ID_tran_instance_id = rb_intern("tran_instance_id");
259
- ID_tran_state = rb_intern("tran_state");
260
- ID_transaction_id = rb_intern("transaction_id");
261
- ID_trigger = rb_intern("trigger");
262
- ID_trigger_data = rb_intern("trigger_data");
263
- ID_uow_control = rb_intern("uow_control");
264
- ID_user_data = rb_intern("user_data");
265
- ID_user_identifier = rb_intern("user_identifier");
266
- ID_work_info_header = rb_intern("work_info_header");
267
- ID_xmit_q_header = rb_intern("xmit_q_header");
268
- ID_xml = rb_intern("xml");
269
- }
270
-
271
- /* --------------------------------------------------------------------------
272
- * Convert between MQMD and Hash
273
- * --------------------------------------------------------------------------*/
274
- void Message_from_mqmd(VALUE hash, MQMD* pmqmd)
275
- {
276
- VALUE str;
277
- size_t size;
278
- size_t length;
279
- size_t i;
280
- char* pChar;
281
-
282
- WMQ_MQLONG2HASH (hash, report, pmqmd->Report)
283
- WMQ_MQLONG2HASH (hash, msg_type, pmqmd->MsgType)
284
- WMQ_MQLONG2HASH (hash, expiry, pmqmd->Expiry)
285
- WMQ_MQLONG2HASH (hash, feedback, pmqmd->Feedback)
286
- WMQ_MQLONG2HASH (hash, encoding, pmqmd->Encoding)
287
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqmd->CodedCharSetId)
288
- WMQ_MQCHARS2HASH(hash, format, pmqmd->Format)
289
- WMQ_MQLONG2HASH (hash, priority, pmqmd->Priority)
290
- WMQ_MQLONG2HASH (hash, persistence, pmqmd->Persistence)
291
- WMQ_MQBYTES2HASH(hash, msg_id, pmqmd->MsgId)
292
- WMQ_MQBYTES2HASH(hash, correl_id, pmqmd->CorrelId)
293
- WMQ_MQLONG2HASH (hash, backout_count, pmqmd->BackoutCount)
294
- WMQ_MQCHARS2HASH(hash, reply_to_q, pmqmd->ReplyToQ)
295
- WMQ_MQCHARS2HASH(hash, reply_to_q_mgr, pmqmd->ReplyToQMgr)
296
- WMQ_MQCHARS2HASH(hash, user_identifier, pmqmd->UserIdentifier)
297
- WMQ_MQBYTES2HASH(hash, accounting_token, pmqmd->AccountingToken)
298
- WMQ_MQCHARS2HASH(hash, appl_identity_data, pmqmd->ApplIdentityData)
299
- WMQ_MQLONG2HASH (hash, put_appl_type, pmqmd->PutApplType)
300
- WMQ_MQCHARS2HASH(hash, put_appl_name, pmqmd->PutApplName)
301
- WMQ_MQCHARS2HASH(hash, put_date, pmqmd->PutDate)
302
- WMQ_MQCHARS2HASH(hash, put_time, pmqmd->PutTime)
303
- WMQ_MQCHARS2HASH(hash, appl_origin_data, pmqmd->ApplOriginData)
304
- WMQ_MQBYTES2HASH(hash, group_id, pmqmd->GroupId)
305
- WMQ_MQLONG2HASH (hash, msg_seq_number, pmqmd->MsgSeqNumber)
306
- WMQ_MQLONG2HASH (hash, offset, pmqmd->Offset)
307
- WMQ_MQLONG2HASH (hash, msg_flags, pmqmd->MsgFlags)
308
- WMQ_MQLONG2HASH (hash, original_length, pmqmd->OriginalLength)
309
- }
310
-
311
- static int Message_to_mqmd_each (VALUE key, VALUE value, MQMD* pmqmd)
312
- {
313
- VALUE str;
314
- size_t size;
315
- size_t length;
316
- VALUE val;
317
- ID id = rb_to_id(key);
318
-
319
- if(id == ID_report) { WMQ_STR2MQLONG (value,pmqmd->Report) }
320
- else if(id == ID_msg_type) { WMQ_STR2MQLONG (value,pmqmd->MsgType) }
321
- else if(id == ID_expiry) { WMQ_STR2MQLONG (value,pmqmd->Expiry) }
322
- else if(id == ID_feedback) { WMQ_STR2MQLONG (value,pmqmd->Feedback) }
323
- else if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqmd->Encoding) }
324
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqmd->CodedCharSetId) }
325
- else if(id == ID_format) { WMQ_STR2MQCHARS (value,pmqmd->Format) }
326
- else if(id == ID_priority) { WMQ_STR2MQLONG (value,pmqmd->Priority) }
327
- else if(id == ID_persistence) { WMQ_STR2MQLONG (value,pmqmd->Persistence) }
328
- else if(id == ID_msg_id) { WMQ_STR2MQBYTES (value,pmqmd->MsgId) }
329
- else if(id == ID_correl_id) { WMQ_STR2MQBYTES (value,pmqmd->CorrelId) }
330
- else if(id == ID_backout_count) { WMQ_STR2MQLONG (value,pmqmd->BackoutCount) }
331
- else if(id == ID_reply_to_q) { WMQ_STR2MQCHARS (value,pmqmd->ReplyToQ) }
332
- else if(id == ID_reply_to_q_mgr) { WMQ_STR2MQCHARS (value,pmqmd->ReplyToQMgr) }
333
- else if(id == ID_user_identifier) { WMQ_STR2MQCHARS (value,pmqmd->UserIdentifier) }
334
- else if(id == ID_accounting_token) { WMQ_STR2MQBYTES (value,pmqmd->AccountingToken) }
335
- else if(id == ID_appl_identity_data) { WMQ_STR2MQCHARS (value,pmqmd->ApplIdentityData) }
336
- else if(id == ID_put_appl_type) { WMQ_STR2MQLONG (value,pmqmd->PutApplType) }
337
- else if(id == ID_put_appl_name) { WMQ_STR2MQCHARS (value,pmqmd->PutApplName) }
338
- else if(id == ID_put_date) { WMQ_STR2MQCHARS (value,pmqmd->PutDate) }
339
- else if(id == ID_put_time) { WMQ_STR2MQCHARS (value,pmqmd->PutTime) }
340
- else if(id == ID_appl_origin_data) { WMQ_STR2MQCHARS (value,pmqmd->ApplOriginData) }
341
- else if(id == ID_group_id) { WMQ_STR2MQBYTES (value,pmqmd->GroupId) }
342
- else if(id == ID_msg_seq_number) { WMQ_STR2MQLONG (value,pmqmd->MsgSeqNumber) }
343
- else if(id == ID_offset) { WMQ_STR2MQLONG (value,pmqmd->Offset) }
344
- else if(id == ID_msg_flags) { WMQ_STR2MQLONG (value,pmqmd->MsgFlags) }
345
- else if(id == ID_original_length) { WMQ_STR2MQLONG (value,pmqmd->OriginalLength) }
346
- else
347
- {
348
- val = rb_funcall(key, ID_to_s, 0);
349
- rb_raise(rb_eArgError, "WMQ::Message#to_mqmd Unknown symbol :%s supplied", RSTRING_PTR(val));
350
- }
351
-
352
- return 0;
353
- }
354
-
355
- void Message_to_mqmd(VALUE hash, MQMD* pmqmd)
356
- {
357
- rb_hash_foreach(hash, Message_to_mqmd_each, (VALUE)pmqmd);
358
- }
359
-
360
- /* --------------------------------------------------------------------------
361
- * Convert between MQMD1 and Hash
362
- * --------------------------------------------------------------------------*/
363
- void Message_from_mqmd1(VALUE hash, MQMD1* pmqmd1)
364
- {
365
- VALUE str;
366
- size_t size;
367
- size_t length;
368
- size_t i;
369
- char* pChar;
370
-
371
- WMQ_MQLONG2HASH (hash, report, pmqmd1->Report)
372
- WMQ_MQLONG2HASH (hash, msg_type, pmqmd1->MsgType)
373
- WMQ_MQLONG2HASH (hash, expiry, pmqmd1->Expiry)
374
- WMQ_MQLONG2HASH (hash, feedback, pmqmd1->Feedback)
375
- WMQ_MQLONG2HASH (hash, encoding, pmqmd1->Encoding)
376
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqmd1->CodedCharSetId)
377
- WMQ_MQCHARS2HASH(hash, format, pmqmd1->Format)
378
- WMQ_MQLONG2HASH (hash, priority, pmqmd1->Priority)
379
- WMQ_MQLONG2HASH (hash, persistence, pmqmd1->Persistence)
380
- WMQ_MQBYTES2HASH(hash, msg_id, pmqmd1->MsgId)
381
- WMQ_MQBYTES2HASH(hash, correl_id, pmqmd1->CorrelId)
382
- WMQ_MQLONG2HASH (hash, backout_count, pmqmd1->BackoutCount)
383
- WMQ_MQCHARS2HASH(hash, reply_to_q, pmqmd1->ReplyToQ)
384
- WMQ_MQCHARS2HASH(hash, reply_to_q_mgr, pmqmd1->ReplyToQMgr)
385
- WMQ_MQCHARS2HASH(hash, user_identifier, pmqmd1->UserIdentifier)
386
- WMQ_MQBYTES2HASH(hash, accounting_token, pmqmd1->AccountingToken)
387
- WMQ_MQCHARS2HASH(hash, appl_identity_data, pmqmd1->ApplIdentityData)
388
- WMQ_MQLONG2HASH (hash, put_appl_type, pmqmd1->PutApplType)
389
- WMQ_MQCHARS2HASH(hash, put_appl_name, pmqmd1->PutApplName)
390
- WMQ_MQCHARS2HASH(hash, put_date, pmqmd1->PutDate)
391
- WMQ_MQCHARS2HASH(hash, put_time, pmqmd1->PutTime)
392
- WMQ_MQCHARS2HASH(hash, appl_origin_data, pmqmd1->ApplOriginData)
393
- }
394
-
395
- static int Message_to_mqmd1_each (VALUE key, VALUE value, MQMD1* pmqmd1)
396
- {
397
- VALUE str;
398
- size_t size;
399
- size_t length;
400
- VALUE val;
401
- ID id = rb_to_id(key);
402
-
403
- if(id == ID_report) { WMQ_STR2MQLONG (value,pmqmd1->Report) }
404
- else if(id == ID_msg_type) { WMQ_STR2MQLONG (value,pmqmd1->MsgType) }
405
- else if(id == ID_expiry) { WMQ_STR2MQLONG (value,pmqmd1->Expiry) }
406
- else if(id == ID_feedback) { WMQ_STR2MQLONG (value,pmqmd1->Feedback) }
407
- else if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqmd1->Encoding) }
408
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqmd1->CodedCharSetId) }
409
- else if(id == ID_format) { WMQ_STR2MQCHARS (value,pmqmd1->Format) }
410
- else if(id == ID_priority) { WMQ_STR2MQLONG (value,pmqmd1->Priority) }
411
- else if(id == ID_persistence) { WMQ_STR2MQLONG (value,pmqmd1->Persistence) }
412
- else if(id == ID_msg_id) { WMQ_STR2MQBYTES (value,pmqmd1->MsgId) }
413
- else if(id == ID_correl_id) { WMQ_STR2MQBYTES (value,pmqmd1->CorrelId) }
414
- else if(id == ID_backout_count) { WMQ_STR2MQLONG (value,pmqmd1->BackoutCount) }
415
- else if(id == ID_reply_to_q) { WMQ_STR2MQCHARS (value,pmqmd1->ReplyToQ) }
416
- else if(id == ID_reply_to_q_mgr) { WMQ_STR2MQCHARS (value,pmqmd1->ReplyToQMgr) }
417
- else if(id == ID_user_identifier) { WMQ_STR2MQCHARS (value,pmqmd1->UserIdentifier) }
418
- else if(id == ID_accounting_token) { WMQ_STR2MQBYTES (value,pmqmd1->AccountingToken) }
419
- else if(id == ID_appl_identity_data) { WMQ_STR2MQCHARS (value,pmqmd1->ApplIdentityData) }
420
- else if(id == ID_put_appl_type) { WMQ_STR2MQLONG (value,pmqmd1->PutApplType) }
421
- else if(id == ID_put_appl_name) { WMQ_STR2MQCHARS (value,pmqmd1->PutApplName) }
422
- else if(id == ID_put_date) { WMQ_STR2MQCHARS (value,pmqmd1->PutDate) }
423
- else if(id == ID_put_time) { WMQ_STR2MQCHARS (value,pmqmd1->PutTime) }
424
- else if(id == ID_appl_origin_data) { WMQ_STR2MQCHARS (value,pmqmd1->ApplOriginData) }
425
- else if(id == ID_remote_q_name) {}
426
- else if(id == ID_remote_q_mgr_name) {}
427
- else
428
- {
429
- val = rb_funcall(key, ID_to_s, 0);
430
- rb_raise(rb_eArgError, "WMQ::Message#to_mqmd1 Unknown symbol :%s supplied", RSTRING_PTR(val));
431
- }
432
-
433
- return 0;
434
- }
435
-
436
- void Message_to_mqmd1(VALUE hash, MQMD1* pmqmd1)
437
- {
438
- rb_hash_foreach(hash, Message_to_mqmd1_each, (VALUE)pmqmd1);
439
- }
440
-
441
- /* --------------------------------------------------------------------------
442
- * Convert between MQRFH2 and Hash
443
- * --------------------------------------------------------------------------*/
444
- void Message_from_mqrfh2(VALUE hash, MQRFH2* pmqrfh2)
445
- {
446
- VALUE str;
447
- size_t size;
448
- size_t length;
449
- size_t i;
450
- char* pChar;
451
-
452
- WMQ_MQLONG2HASH (hash, encoding, pmqrfh2->Encoding)
453
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqrfh2->CodedCharSetId)
454
- WMQ_MQLONG2HASH (hash, flags, pmqrfh2->Flags)
455
- WMQ_MQLONG2HASH (hash, name_value_ccsid, pmqrfh2->NameValueCCSID)
456
- }
457
-
458
- static int Message_to_mqrfh2_each (VALUE key, VALUE value, MQRFH2* pmqrfh2)
459
- {
460
- VALUE str;
461
- size_t size;
462
- size_t length;
463
- VALUE val;
464
- ID id = rb_to_id(key);
465
-
466
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqrfh2->Encoding) }
467
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqrfh2->CodedCharSetId) }
468
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqrfh2->Flags) }
469
- else if(id == ID_name_value_ccsid) { WMQ_STR2MQLONG (value,pmqrfh2->NameValueCCSID) }
470
- else if(id == ID_xml) {}
471
- else if(id != ID_header_type)
472
- {
473
- val = rb_funcall(key, ID_to_s, 0);
474
- rb_raise(rb_eArgError, "WMQ::Message#to_mqrfh2 Unknown symbol :%s supplied", RSTRING_PTR(val));
475
- }
476
-
477
- return 0;
478
- }
479
-
480
- void Message_to_mqrfh2(VALUE hash, MQRFH2* pmqrfh2)
481
- {
482
- rb_hash_foreach(hash, Message_to_mqrfh2_each, (VALUE)pmqrfh2);
483
- }
484
-
485
- /* --------------------------------------------------------------------------
486
- * Convert between MQRFH and Hash
487
- * --------------------------------------------------------------------------*/
488
- void Message_from_mqrfh(VALUE hash, MQRFH* pmqrfh)
489
- {
490
- VALUE str;
491
- size_t size;
492
- size_t length;
493
- size_t i;
494
- char* pChar;
495
-
496
- WMQ_MQLONG2HASH (hash, encoding, pmqrfh->Encoding)
497
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqrfh->CodedCharSetId)
498
- WMQ_MQLONG2HASH (hash, flags, pmqrfh->Flags)
499
- }
500
-
501
- static int Message_to_mqrfh_each (VALUE key, VALUE value, MQRFH* pmqrfh)
502
- {
503
- VALUE str;
504
- size_t size;
505
- size_t length;
506
- VALUE val;
507
- ID id = rb_to_id(key);
508
-
509
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqrfh->Encoding) }
510
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqrfh->CodedCharSetId) }
511
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqrfh->Flags) }
512
- else if(id == ID_name_value) {}
513
- else if(id != ID_header_type)
514
- {
515
- val = rb_funcall(key, ID_to_s, 0);
516
- rb_raise(rb_eArgError, "WMQ::Message#to_mqrfh Unknown symbol :%s supplied", RSTRING_PTR(val));
517
- }
518
-
519
- return 0;
520
- }
521
-
522
- void Message_to_mqrfh(VALUE hash, MQRFH* pmqrfh)
523
- {
524
- rb_hash_foreach(hash, Message_to_mqrfh_each, (VALUE)pmqrfh);
525
- }
526
-
527
- /* --------------------------------------------------------------------------
528
- * Convert between MQDLH and Hash
529
- * --------------------------------------------------------------------------*/
530
- void Message_from_mqdlh(VALUE hash, MQDLH* pmqdlh)
531
- {
532
- VALUE str;
533
- size_t size;
534
- size_t length;
535
- size_t i;
536
- char* pChar;
537
-
538
- WMQ_MQLONG2HASH (hash, reason, pmqdlh->Reason)
539
- WMQ_MQCHARS2HASH(hash, dest_q_name, pmqdlh->DestQName)
540
- WMQ_MQCHARS2HASH(hash, dest_q_mgr_name, pmqdlh->DestQMgrName)
541
- WMQ_MQLONG2HASH (hash, encoding, pmqdlh->Encoding)
542
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqdlh->CodedCharSetId)
543
- WMQ_MQLONG2HASH (hash, put_appl_type, pmqdlh->PutApplType)
544
- WMQ_MQCHARS2HASH(hash, put_appl_name, pmqdlh->PutApplName)
545
- WMQ_MQCHARS2HASH(hash, put_date, pmqdlh->PutDate)
546
- WMQ_MQCHARS2HASH(hash, put_time, pmqdlh->PutTime)
547
- }
548
-
549
- static int Message_to_mqdlh_each (VALUE key, VALUE value, MQDLH* pmqdlh)
550
- {
551
- VALUE str;
552
- size_t size;
553
- size_t length;
554
- VALUE val;
555
- ID id = rb_to_id(key);
556
-
557
- if(id == ID_reason) { WMQ_STR2MQLONG (value,pmqdlh->Reason) }
558
- else if(id == ID_dest_q_name) { WMQ_STR2MQCHARS (value,pmqdlh->DestQName) }
559
- else if(id == ID_dest_q_mgr_name) { WMQ_STR2MQCHARS (value,pmqdlh->DestQMgrName) }
560
- else if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqdlh->Encoding) }
561
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqdlh->CodedCharSetId) }
562
- else if(id == ID_put_appl_type) { WMQ_STR2MQLONG (value,pmqdlh->PutApplType) }
563
- else if(id == ID_put_appl_name) { WMQ_STR2MQCHARS (value,pmqdlh->PutApplName) }
564
- else if(id == ID_put_date) { WMQ_STR2MQCHARS (value,pmqdlh->PutDate) }
565
- else if(id == ID_put_time) { WMQ_STR2MQCHARS (value,pmqdlh->PutTime) }
566
- else if(id != ID_header_type)
567
- {
568
- val = rb_funcall(key, ID_to_s, 0);
569
- rb_raise(rb_eArgError, "WMQ::Message#to_mqdlh Unknown symbol :%s supplied", RSTRING_PTR(val));
570
- }
571
-
572
- return 0;
573
- }
574
-
575
- void Message_to_mqdlh(VALUE hash, MQDLH* pmqdlh)
576
- {
577
- rb_hash_foreach(hash, Message_to_mqdlh_each, (VALUE)pmqdlh);
578
- }
579
-
580
- /* --------------------------------------------------------------------------
581
- * Convert between MQCIH and Hash
582
- * --------------------------------------------------------------------------*/
583
- void Message_from_mqcih(VALUE hash, MQCIH* pmqcih)
584
- {
585
- VALUE str;
586
- size_t size;
587
- size_t length;
588
- size_t i;
589
- char* pChar;
590
-
591
- WMQ_MQLONG2HASH (hash, encoding, pmqcih->Encoding)
592
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqcih->CodedCharSetId)
593
- WMQ_MQLONG2HASH (hash, flags, pmqcih->Flags)
594
- WMQ_MQLONG2HASH (hash, return_code, pmqcih->ReturnCode)
595
- WMQ_MQLONG2HASH (hash, comp_code, pmqcih->CompCode)
596
- WMQ_MQLONG2HASH (hash, reason, pmqcih->Reason)
597
- WMQ_MQLONG2HASH (hash, uow_control, pmqcih->UOWControl)
598
- WMQ_MQLONG2HASH (hash, get_wait_interval, pmqcih->GetWaitInterval)
599
- WMQ_MQLONG2HASH (hash, link_type, pmqcih->LinkType)
600
- WMQ_MQLONG2HASH (hash, output_data_length, pmqcih->OutputDataLength)
601
- WMQ_MQLONG2HASH (hash, facility_keep_time, pmqcih->FacilityKeepTime)
602
- WMQ_MQLONG2HASH (hash, ads_descriptor, pmqcih->ADSDescriptor)
603
- WMQ_MQLONG2HASH (hash, conversational_task, pmqcih->ConversationalTask)
604
- WMQ_MQLONG2HASH (hash, task_end_status, pmqcih->TaskEndStatus)
605
- WMQ_MQBYTES2HASH(hash, facility, pmqcih->Facility)
606
- WMQ_MQCHARS2HASH(hash, function, pmqcih->Function)
607
- WMQ_MQCHARS2HASH(hash, abend_code, pmqcih->AbendCode)
608
- WMQ_MQCHARS2HASH(hash, authenticator, pmqcih->Authenticator)
609
- WMQ_MQCHARS2HASH(hash, reserved1, pmqcih->Reserved1)
610
- WMQ_MQCHARS2HASH(hash, reply_to_format, pmqcih->ReplyToFormat)
611
- WMQ_MQCHARS2HASH(hash, remote_sys_id, pmqcih->RemoteSysId)
612
- WMQ_MQCHARS2HASH(hash, remote_trans_id, pmqcih->RemoteTransId)
613
- WMQ_MQCHARS2HASH(hash, transaction_id, pmqcih->TransactionId)
614
- WMQ_MQCHARS2HASH(hash, facility_like, pmqcih->FacilityLike)
615
- WMQ_MQCHARS2HASH(hash, attention_id, pmqcih->AttentionId)
616
- WMQ_MQCHARS2HASH(hash, start_code, pmqcih->StartCode)
617
- WMQ_MQCHARS2HASH(hash, cancel_code, pmqcih->CancelCode)
618
- WMQ_MQCHARS2HASH(hash, next_transaction_id, pmqcih->NextTransactionId)
619
- WMQ_MQCHARS2HASH(hash, reserved2, pmqcih->Reserved2)
620
- WMQ_MQCHARS2HASH(hash, reserved3, pmqcih->Reserved3)
621
- WMQ_MQLONG2HASH (hash, cursor_position, pmqcih->CursorPosition)
622
- WMQ_MQLONG2HASH (hash, error_offset, pmqcih->ErrorOffset)
623
- WMQ_MQLONG2HASH (hash, input_item, pmqcih->InputItem)
624
- WMQ_MQLONG2HASH (hash, reserved4, pmqcih->Reserved4)
625
- }
626
-
627
- static int Message_to_mqcih_each (VALUE key, VALUE value, MQCIH* pmqcih)
628
- {
629
- VALUE str;
630
- size_t size;
631
- size_t length;
632
- VALUE val;
633
- ID id = rb_to_id(key);
634
-
635
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqcih->Encoding) }
636
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqcih->CodedCharSetId) }
637
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqcih->Flags) }
638
- else if(id == ID_return_code) { WMQ_STR2MQLONG (value,pmqcih->ReturnCode) }
639
- else if(id == ID_comp_code) { WMQ_STR2MQLONG (value,pmqcih->CompCode) }
640
- else if(id == ID_reason) { WMQ_STR2MQLONG (value,pmqcih->Reason) }
641
- else if(id == ID_uow_control) { WMQ_STR2MQLONG (value,pmqcih->UOWControl) }
642
- else if(id == ID_get_wait_interval) { WMQ_STR2MQLONG (value,pmqcih->GetWaitInterval) }
643
- else if(id == ID_link_type) { WMQ_STR2MQLONG (value,pmqcih->LinkType) }
644
- else if(id == ID_output_data_length) { WMQ_STR2MQLONG (value,pmqcih->OutputDataLength) }
645
- else if(id == ID_facility_keep_time) { WMQ_STR2MQLONG (value,pmqcih->FacilityKeepTime) }
646
- else if(id == ID_ads_descriptor) { WMQ_STR2MQLONG (value,pmqcih->ADSDescriptor) }
647
- else if(id == ID_conversational_task) { WMQ_STR2MQLONG (value,pmqcih->ConversationalTask) }
648
- else if(id == ID_task_end_status) { WMQ_STR2MQLONG (value,pmqcih->TaskEndStatus) }
649
- else if(id == ID_facility) { WMQ_STR2MQBYTES (value,pmqcih->Facility) }
650
- else if(id == ID_function) { WMQ_STR2MQCHARS (value,pmqcih->Function) }
651
- else if(id == ID_abend_code) { WMQ_STR2MQCHARS (value,pmqcih->AbendCode) }
652
- else if(id == ID_authenticator) { WMQ_STR2MQCHARS (value,pmqcih->Authenticator) }
653
- else if(id == ID_reserved1) { WMQ_STR2MQCHARS (value,pmqcih->Reserved1) }
654
- else if(id == ID_reply_to_format) { WMQ_STR2MQCHARS (value,pmqcih->ReplyToFormat) }
655
- else if(id == ID_remote_sys_id) { WMQ_STR2MQCHARS (value,pmqcih->RemoteSysId) }
656
- else if(id == ID_remote_trans_id) { WMQ_STR2MQCHARS (value,pmqcih->RemoteTransId) }
657
- else if(id == ID_transaction_id) { WMQ_STR2MQCHARS (value,pmqcih->TransactionId) }
658
- else if(id == ID_facility_like) { WMQ_STR2MQCHARS (value,pmqcih->FacilityLike) }
659
- else if(id == ID_attention_id) { WMQ_STR2MQCHARS (value,pmqcih->AttentionId) }
660
- else if(id == ID_start_code) { WMQ_STR2MQCHARS (value,pmqcih->StartCode) }
661
- else if(id == ID_cancel_code) { WMQ_STR2MQCHARS (value,pmqcih->CancelCode) }
662
- else if(id == ID_next_transaction_id) { WMQ_STR2MQCHARS (value,pmqcih->NextTransactionId) }
663
- else if(id == ID_reserved2) { WMQ_STR2MQCHARS (value,pmqcih->Reserved2) }
664
- else if(id == ID_reserved3) { WMQ_STR2MQCHARS (value,pmqcih->Reserved3) }
665
- else if(id == ID_cursor_position) { WMQ_STR2MQLONG (value,pmqcih->CursorPosition) }
666
- else if(id == ID_error_offset) { WMQ_STR2MQLONG (value,pmqcih->ErrorOffset) }
667
- else if(id == ID_input_item) { WMQ_STR2MQLONG (value,pmqcih->InputItem) }
668
- else if(id == ID_reserved4) { WMQ_STR2MQLONG (value,pmqcih->Reserved4) }
669
- else if(id != ID_header_type)
670
- {
671
- val = rb_funcall(key, ID_to_s, 0);
672
- rb_raise(rb_eArgError, "WMQ::Message#to_mqcih Unknown symbol :%s supplied", RSTRING_PTR(val));
673
- }
674
-
675
- return 0;
676
- }
677
-
678
- void Message_to_mqcih(VALUE hash, MQCIH* pmqcih)
679
- {
680
- rb_hash_foreach(hash, Message_to_mqcih_each, (VALUE)pmqcih);
681
- }
682
-
683
- /* --------------------------------------------------------------------------
684
- * Convert between MQDH and Hash
685
- * --------------------------------------------------------------------------*/
686
- void Message_from_mqdh(VALUE hash, MQDH* pmqdh)
687
- {
688
- VALUE str;
689
- size_t size;
690
- size_t length;
691
- size_t i;
692
- char* pChar;
693
-
694
- WMQ_MQLONG2HASH (hash, encoding, pmqdh->Encoding)
695
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqdh->CodedCharSetId)
696
- WMQ_MQLONG2HASH (hash, flags, pmqdh->Flags)
697
- WMQ_MQLONG2HASH (hash, put_msg_rec_fields, pmqdh->PutMsgRecFields)
698
- WMQ_MQLONG2HASH (hash, recs_present, pmqdh->RecsPresent)
699
- WMQ_MQLONG2HASH (hash, object_rec_offset, pmqdh->ObjectRecOffset)
700
- WMQ_MQLONG2HASH (hash, put_msg_rec_offset, pmqdh->PutMsgRecOffset)
701
- }
702
-
703
- static int Message_to_mqdh_each (VALUE key, VALUE value, MQDH* pmqdh)
704
- {
705
- VALUE str;
706
- size_t size;
707
- size_t length;
708
- VALUE val;
709
- ID id = rb_to_id(key);
710
-
711
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqdh->Encoding) }
712
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqdh->CodedCharSetId) }
713
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqdh->Flags) }
714
- else if(id == ID_put_msg_rec_fields) { WMQ_STR2MQLONG (value,pmqdh->PutMsgRecFields) }
715
- else if(id == ID_recs_present) { WMQ_STR2MQLONG (value,pmqdh->RecsPresent) }
716
- else if(id == ID_object_rec_offset) { WMQ_STR2MQLONG (value,pmqdh->ObjectRecOffset) }
717
- else if(id == ID_put_msg_rec_offset) { WMQ_STR2MQLONG (value,pmqdh->PutMsgRecOffset) }
718
- else if(id != ID_header_type)
719
- {
720
- val = rb_funcall(key, ID_to_s, 0);
721
- rb_raise(rb_eArgError, "WMQ::Message#to_mqdh Unknown symbol :%s supplied", RSTRING_PTR(val));
722
- }
723
-
724
- return 0;
725
- }
726
-
727
- void Message_to_mqdh(VALUE hash, MQDH* pmqdh)
728
- {
729
- rb_hash_foreach(hash, Message_to_mqdh_each, (VALUE)pmqdh);
730
- }
731
-
732
- /* --------------------------------------------------------------------------
733
- * Convert between MQIIH and Hash
734
- * --------------------------------------------------------------------------*/
735
- void Message_from_mqiih(VALUE hash, MQIIH* pmqiih)
736
- {
737
- VALUE str;
738
- size_t size;
739
- size_t length;
740
- size_t i;
741
- char* pChar;
742
-
743
- WMQ_MQLONG2HASH (hash, encoding, pmqiih->Encoding)
744
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqiih->CodedCharSetId)
745
- WMQ_MQLONG2HASH (hash, flags, pmqiih->Flags)
746
- WMQ_MQCHARS2HASH(hash, l_term_override, pmqiih->LTermOverride)
747
- WMQ_MQCHARS2HASH(hash, mfs_map_name, pmqiih->MFSMapName)
748
- WMQ_MQCHARS2HASH(hash, reply_to_format, pmqiih->ReplyToFormat)
749
- WMQ_MQCHARS2HASH(hash, authenticator, pmqiih->Authenticator)
750
- WMQ_MQBYTES2HASH(hash, tran_instance_id, pmqiih->TranInstanceId)
751
- WMQ_MQCHAR2HASH (hash, tran_state, pmqiih->TranState)
752
- WMQ_MQCHAR2HASH (hash, commit_mode, pmqiih->CommitMode)
753
- WMQ_MQCHAR2HASH (hash, security_scope, pmqiih->SecurityScope)
754
- WMQ_MQCHAR2HASH (hash, reserved, pmqiih->Reserved)
755
- }
756
-
757
- static int Message_to_mqiih_each (VALUE key, VALUE value, MQIIH* pmqiih)
758
- {
759
- VALUE str;
760
- size_t size;
761
- size_t length;
762
- VALUE val;
763
- ID id = rb_to_id(key);
764
-
765
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqiih->Encoding) }
766
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqiih->CodedCharSetId) }
767
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqiih->Flags) }
768
- else if(id == ID_l_term_override) { WMQ_STR2MQCHARS (value,pmqiih->LTermOverride) }
769
- else if(id == ID_mfs_map_name) { WMQ_STR2MQCHARS (value,pmqiih->MFSMapName) }
770
- else if(id == ID_reply_to_format) { WMQ_STR2MQCHARS (value,pmqiih->ReplyToFormat) }
771
- else if(id == ID_authenticator) { WMQ_STR2MQCHARS (value,pmqiih->Authenticator) }
772
- else if(id == ID_tran_instance_id) { WMQ_STR2MQBYTES (value,pmqiih->TranInstanceId) }
773
- else if(id == ID_tran_state) { WMQ_STR2MQCHAR (value,pmqiih->TranState) }
774
- else if(id == ID_commit_mode) { WMQ_STR2MQCHAR (value,pmqiih->CommitMode) }
775
- else if(id == ID_security_scope) { WMQ_STR2MQCHAR (value,pmqiih->SecurityScope) }
776
- else if(id == ID_reserved) { WMQ_STR2MQCHAR (value,pmqiih->Reserved) }
777
- else if(id != ID_header_type)
778
- {
779
- val = rb_funcall(key, ID_to_s, 0);
780
- rb_raise(rb_eArgError, "WMQ::Message#to_mqiih Unknown symbol :%s supplied", RSTRING_PTR(val));
781
- }
782
-
783
- return 0;
784
- }
785
-
786
- void Message_to_mqiih(VALUE hash, MQIIH* pmqiih)
787
- {
788
- rb_hash_foreach(hash, Message_to_mqiih_each, (VALUE)pmqiih);
789
- }
790
-
791
- /* --------------------------------------------------------------------------
792
- * Convert between MQRMH and Hash
793
- * --------------------------------------------------------------------------*/
794
- void Message_from_mqrmh(VALUE hash, MQRMH* pmqrmh)
795
- {
796
- VALUE str;
797
- size_t size;
798
- size_t length;
799
- size_t i;
800
- char* pChar;
801
-
802
- WMQ_MQLONG2HASH (hash, encoding, pmqrmh->Encoding)
803
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqrmh->CodedCharSetId)
804
- WMQ_MQLONG2HASH (hash, flags, pmqrmh->Flags)
805
- WMQ_MQCHARS2HASH(hash, object_type, pmqrmh->ObjectType)
806
- WMQ_MQBYTES2HASH(hash, object_instance_id, pmqrmh->ObjectInstanceId)
807
- WMQ_MQLONG2HASH (hash, src_env_length, pmqrmh->SrcEnvLength)
808
- WMQ_MQLONG2HASH (hash, src_env_offset, pmqrmh->SrcEnvOffset)
809
- WMQ_MQLONG2HASH (hash, src_name_length, pmqrmh->SrcNameLength)
810
- WMQ_MQLONG2HASH (hash, src_name_offset, pmqrmh->SrcNameOffset)
811
- WMQ_MQLONG2HASH (hash, dest_env_length, pmqrmh->DestEnvLength)
812
- WMQ_MQLONG2HASH (hash, dest_env_offset, pmqrmh->DestEnvOffset)
813
- WMQ_MQLONG2HASH (hash, dest_name_length, pmqrmh->DestNameLength)
814
- WMQ_MQLONG2HASH (hash, dest_name_offset, pmqrmh->DestNameOffset)
815
- WMQ_MQLONG2HASH (hash, data_logical_length, pmqrmh->DataLogicalLength)
816
- WMQ_MQLONG2HASH (hash, data_logical_offset, pmqrmh->DataLogicalOffset)
817
- WMQ_MQLONG2HASH (hash, data_logical_offset2, pmqrmh->DataLogicalOffset2)
818
- }
819
-
820
- static int Message_to_mqrmh_each (VALUE key, VALUE value, MQRMH* pmqrmh)
821
- {
822
- VALUE str;
823
- size_t size;
824
- size_t length;
825
- VALUE val;
826
- ID id = rb_to_id(key);
827
-
828
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqrmh->Encoding) }
829
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqrmh->CodedCharSetId) }
830
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqrmh->Flags) }
831
- else if(id == ID_object_type) { WMQ_STR2MQCHARS (value,pmqrmh->ObjectType) }
832
- else if(id == ID_object_instance_id) { WMQ_STR2MQBYTES (value,pmqrmh->ObjectInstanceId) }
833
- else if(id == ID_src_env_length) { WMQ_STR2MQLONG (value,pmqrmh->SrcEnvLength) }
834
- else if(id == ID_src_env_offset) { WMQ_STR2MQLONG (value,pmqrmh->SrcEnvOffset) }
835
- else if(id == ID_src_name_length) { WMQ_STR2MQLONG (value,pmqrmh->SrcNameLength) }
836
- else if(id == ID_src_name_offset) { WMQ_STR2MQLONG (value,pmqrmh->SrcNameOffset) }
837
- else if(id == ID_dest_env_length) { WMQ_STR2MQLONG (value,pmqrmh->DestEnvLength) }
838
- else if(id == ID_dest_env_offset) { WMQ_STR2MQLONG (value,pmqrmh->DestEnvOffset) }
839
- else if(id == ID_dest_name_length) { WMQ_STR2MQLONG (value,pmqrmh->DestNameLength) }
840
- else if(id == ID_dest_name_offset) { WMQ_STR2MQLONG (value,pmqrmh->DestNameOffset) }
841
- else if(id == ID_data_logical_length) { WMQ_STR2MQLONG (value,pmqrmh->DataLogicalLength) }
842
- else if(id == ID_data_logical_offset) { WMQ_STR2MQLONG (value,pmqrmh->DataLogicalOffset) }
843
- else if(id == ID_data_logical_offset2) { WMQ_STR2MQLONG (value,pmqrmh->DataLogicalOffset2) }
844
- else if(id != ID_header_type)
845
- {
846
- val = rb_funcall(key, ID_to_s, 0);
847
- rb_raise(rb_eArgError, "WMQ::Message#to_mqrmh Unknown symbol :%s supplied", RSTRING_PTR(val));
848
- }
849
-
850
- return 0;
851
- }
852
-
853
- void Message_to_mqrmh(VALUE hash, MQRMH* pmqrmh)
854
- {
855
- rb_hash_foreach(hash, Message_to_mqrmh_each, (VALUE)pmqrmh);
856
- }
857
-
858
- /* --------------------------------------------------------------------------
859
- * Convert between MQTM and Hash
860
- * --------------------------------------------------------------------------*/
861
- void Message_from_mqtm(VALUE hash, MQTM* pmqtm)
862
- {
863
- VALUE str;
864
- size_t size;
865
- size_t length;
866
- size_t i;
867
- char* pChar;
868
-
869
- WMQ_MQCHARS2HASH(hash, q_name, pmqtm->QName)
870
- WMQ_MQCHARS2HASH(hash, process_name, pmqtm->ProcessName)
871
- WMQ_MQCHARS2HASH(hash, trigger_data, pmqtm->TriggerData)
872
- WMQ_MQLONG2HASH (hash, appl_type, pmqtm->ApplType)
873
- WMQ_MQCHARS2HASH(hash, appl_id, pmqtm->ApplId)
874
- WMQ_MQCHARS2HASH(hash, env_data, pmqtm->EnvData)
875
- WMQ_MQCHARS2HASH(hash, user_data, pmqtm->UserData)
876
- }
877
-
878
- static int Message_to_mqtm_each (VALUE key, VALUE value, MQTM* pmqtm)
879
- {
880
- VALUE str;
881
- size_t size;
882
- size_t length;
883
- VALUE val;
884
- ID id = rb_to_id(key);
885
-
886
- if(id == ID_q_name) { WMQ_STR2MQCHARS (value,pmqtm->QName) }
887
- else if(id == ID_process_name) { WMQ_STR2MQCHARS (value,pmqtm->ProcessName) }
888
- else if(id == ID_trigger_data) { WMQ_STR2MQCHARS (value,pmqtm->TriggerData) }
889
- else if(id == ID_appl_type) { WMQ_STR2MQLONG (value,pmqtm->ApplType) }
890
- else if(id == ID_appl_id) { WMQ_STR2MQCHARS (value,pmqtm->ApplId) }
891
- else if(id == ID_env_data) { WMQ_STR2MQCHARS (value,pmqtm->EnvData) }
892
- else if(id == ID_user_data) { WMQ_STR2MQCHARS (value,pmqtm->UserData) }
893
- else if(id != ID_header_type)
894
- {
895
- val = rb_funcall(key, ID_to_s, 0);
896
- rb_raise(rb_eArgError, "WMQ::Message#to_mqtm Unknown symbol :%s supplied", RSTRING_PTR(val));
897
- }
898
-
899
- return 0;
900
- }
901
-
902
- void Message_to_mqtm(VALUE hash, MQTM* pmqtm)
903
- {
904
- rb_hash_foreach(hash, Message_to_mqtm_each, (VALUE)pmqtm);
905
- }
906
-
907
- /* --------------------------------------------------------------------------
908
- * Convert between MQTMC2 and Hash
909
- * --------------------------------------------------------------------------*/
910
- void Message_from_mqtmc2(VALUE hash, MQTMC2* pmqtmc2)
911
- {
912
- VALUE str;
913
- size_t size;
914
- size_t length;
915
- size_t i;
916
- char* pChar;
917
-
918
- WMQ_MQCHARS2HASH(hash, q_name, pmqtmc2->QName)
919
- WMQ_MQCHARS2HASH(hash, process_name, pmqtmc2->ProcessName)
920
- WMQ_MQCHARS2HASH(hash, trigger_data, pmqtmc2->TriggerData)
921
- WMQ_MQCHARS2HASH(hash, appl_type, pmqtmc2->ApplType)
922
- WMQ_MQCHARS2HASH(hash, appl_id, pmqtmc2->ApplId)
923
- WMQ_MQCHARS2HASH(hash, env_data, pmqtmc2->EnvData)
924
- WMQ_MQCHARS2HASH(hash, user_data, pmqtmc2->UserData)
925
- WMQ_MQCHARS2HASH(hash, q_mgr_name, pmqtmc2->QMgrName)
926
- }
927
-
928
- static int Message_to_mqtmc2_each (VALUE key, VALUE value, MQTMC2* pmqtmc2)
929
- {
930
- VALUE str;
931
- size_t size;
932
- size_t length;
933
- VALUE val;
934
- ID id = rb_to_id(key);
935
-
936
- if(id == ID_q_name) { WMQ_STR2MQCHARS (value,pmqtmc2->QName) }
937
- else if(id == ID_process_name) { WMQ_STR2MQCHARS (value,pmqtmc2->ProcessName) }
938
- else if(id == ID_trigger_data) { WMQ_STR2MQCHARS (value,pmqtmc2->TriggerData) }
939
- else if(id == ID_appl_type) { WMQ_STR2MQCHARS (value,pmqtmc2->ApplType) }
940
- else if(id == ID_appl_id) { WMQ_STR2MQCHARS (value,pmqtmc2->ApplId) }
941
- else if(id == ID_env_data) { WMQ_STR2MQCHARS (value,pmqtmc2->EnvData) }
942
- else if(id == ID_user_data) { WMQ_STR2MQCHARS (value,pmqtmc2->UserData) }
943
- else if(id == ID_q_mgr_name) { WMQ_STR2MQCHARS (value,pmqtmc2->QMgrName) }
944
- else
945
- {
946
- val = rb_funcall(key, ID_to_s, 0);
947
- rb_raise(rb_eArgError, "WMQ::Message#to_mqtmc2 Unknown symbol :%s supplied", RSTRING_PTR(val));
948
- }
949
-
950
- return 0;
951
- }
952
-
953
- void Message_to_mqtmc2(VALUE hash, MQTMC2* pmqtmc2)
954
- {
955
- rb_hash_foreach(hash, Message_to_mqtmc2_each, (VALUE)pmqtmc2);
956
- }
957
-
958
- /* --------------------------------------------------------------------------
959
- * Convert between MQWIH and Hash
960
- * --------------------------------------------------------------------------*/
961
- void Message_from_mqwih(VALUE hash, MQWIH* pmqwih)
962
- {
963
- VALUE str;
964
- size_t size;
965
- size_t length;
966
- size_t i;
967
- char* pChar;
968
-
969
- WMQ_MQLONG2HASH (hash, encoding, pmqwih->Encoding)
970
- WMQ_MQLONG2HASH (hash, coded_char_set_id, pmqwih->CodedCharSetId)
971
- WMQ_MQLONG2HASH (hash, flags, pmqwih->Flags)
972
- WMQ_MQCHARS2HASH(hash, service_name, pmqwih->ServiceName)
973
- WMQ_MQCHARS2HASH(hash, service_step, pmqwih->ServiceStep)
974
- WMQ_MQBYTES2HASH(hash, msg_token, pmqwih->MsgToken)
975
- WMQ_MQCHARS2HASH(hash, reserved, pmqwih->Reserved)
976
- }
977
-
978
- static int Message_to_mqwih_each (VALUE key, VALUE value, MQWIH* pmqwih)
979
- {
980
- VALUE str;
981
- size_t size;
982
- size_t length;
983
- VALUE val;
984
- ID id = rb_to_id(key);
985
-
986
- if(id == ID_encoding) { WMQ_STR2MQLONG (value,pmqwih->Encoding) }
987
- else if(id == ID_coded_char_set_id) { WMQ_STR2MQLONG (value,pmqwih->CodedCharSetId) }
988
- else if(id == ID_flags) { WMQ_STR2MQLONG (value,pmqwih->Flags) }
989
- else if(id == ID_service_name) { WMQ_STR2MQCHARS (value,pmqwih->ServiceName) }
990
- else if(id == ID_service_step) { WMQ_STR2MQCHARS (value,pmqwih->ServiceStep) }
991
- else if(id == ID_msg_token) { WMQ_STR2MQBYTES (value,pmqwih->MsgToken) }
992
- else if(id == ID_reserved) { WMQ_STR2MQCHARS (value,pmqwih->Reserved) }
993
- else if(id != ID_header_type)
994
- {
995
- val = rb_funcall(key, ID_to_s, 0);
996
- rb_raise(rb_eArgError, "WMQ::Message#to_mqwih Unknown symbol :%s supplied", RSTRING_PTR(val));
997
- }
998
-
999
- return 0;
1000
- }
1001
-
1002
- void Message_to_mqwih(VALUE hash, MQWIH* pmqwih)
1003
- {
1004
- rb_hash_foreach(hash, Message_to_mqwih_each, (VALUE)pmqwih);
1005
- }
1006
-
1007
- /* --------------------------------------------------------------------------
1008
- * Convert between MQXQH and Hash
1009
- * --------------------------------------------------------------------------*/
1010
- void Message_from_mqxqh(VALUE hash, MQXQH* pmqxqh)
1011
- {
1012
- VALUE str;
1013
- size_t size;
1014
- size_t length;
1015
- size_t i;
1016
- char* pChar;
1017
-
1018
- WMQ_MQCHARS2HASH(hash, remote_q_name, pmqxqh->RemoteQName)
1019
- WMQ_MQCHARS2HASH(hash, remote_q_mgr_name, pmqxqh->RemoteQMgrName)
1020
- Message_from_mqmd1(hash, &pmqxqh->MsgDesc);
1021
- }
1022
-
1023
- static int Message_to_mqxqh_each (VALUE key, VALUE value, MQXQH* pmqxqh)
1024
- {
1025
- VALUE str;
1026
- size_t size;
1027
- size_t length;
1028
- VALUE val;
1029
- ID id = rb_to_id(key);
1030
-
1031
- if(id == ID_remote_q_name) { WMQ_STR2MQCHARS (value,pmqxqh->RemoteQName) }
1032
- else if(id == ID_remote_q_mgr_name) { WMQ_STR2MQCHARS (value,pmqxqh->RemoteQMgrName) }
1033
- else if(id != ID_header_type) {
1034
- Message_to_mqmd1_each(key, value, &pmqxqh->MsgDesc);
1035
- }
1036
- return 0;
1037
- }
1038
-
1039
- void Message_to_mqxqh(VALUE hash, MQXQH* pmqxqh)
1040
- {
1041
- rb_hash_foreach(hash, Message_to_mqxqh_each, (VALUE)pmqxqh);
1042
- }
1043
-
1044
-
1045
- /* --------------------------------------------------------------------------
1046
- * Extract message data and headers
1047
- * --------------------------------------------------------------------------*/
1048
- void Message_deblock(VALUE self, PMQMD pmqmd, PMQBYTE p_buffer, MQLONG total_length, MQLONG trace_level)
1049
- {
1050
- PMQCHAR p_format = pmqmd->Format; /* Start with format in MQMD */
1051
- PMQBYTE p_data = p_buffer; /* Pointer to start of data */
1052
- MQLONG data_length= total_length; /* length of data portion */
1053
- VALUE headers = rb_ary_new();
1054
- VALUE descriptor = rb_hash_new();
1055
- MQLONG size = 0;
1056
-
1057
- while (p_format)
1058
- {
1059
- /* MQRFH2: rf_header_2 */
1060
- if(strncmp(p_format, MQFMT_RF_HEADER_2, MQ_FORMAT_LENGTH) == 0)
1061
- {
1062
- VALUE hash = rb_hash_new();
1063
- PMQRFH2 p_header = (PMQRFH2)p_data;
1064
-
1065
- if(trace_level>2)
1066
- printf("WMQ::Message#deblock Found rf_header_2\n");
1067
-
1068
- if(memcmp(p_header->StrucId, MQRFH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1069
- {
1070
- if(trace_level>1)
1071
- printf("WMQ::Message#deblock MQFMT_RF_HEADER_2 received, but message does not contain MQRFH2\n");
1072
- break; /* Bad Message received, do not deblock headers */
1073
- }
1074
- else
1075
- {
1076
- Message_from_mqrfh2(hash, p_header);
1077
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_rf_header_2));
1078
- rb_ary_push(headers, hash);
1079
- size = Message_deblock_rf_header_2 (hash, p_data, data_length);
1080
- if (!size) break; /* Poison Message */
1081
- p_data += size;
1082
- data_length -= size;
1083
- p_format = p_header->Format;
1084
- }
1085
- }
1086
- else
1087
- /* MQRFH: rf_header */
1088
- if(strncmp(p_format, MQFMT_RF_HEADER, MQ_FORMAT_LENGTH) == 0)
1089
- {
1090
- VALUE hash = rb_hash_new();
1091
- PMQRFH p_header = (PMQRFH)p_data;
1092
-
1093
- if(trace_level>2)
1094
- printf("WMQ::Message#deblock Found rf_header\n");
1095
-
1096
- if(memcmp(p_header->StrucId, MQRFH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1097
- {
1098
- if(trace_level>1)
1099
- printf("WMQ::Message#deblock MQFMT_RF_HEADER received, but message does not contain MQRFH\n");
1100
- break; /* Bad Message received, do not deblock headers */
1101
- }
1102
- else
1103
- {
1104
- Message_from_mqrfh(hash, p_header);
1105
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_rf_header));
1106
- rb_ary_push(headers, hash);
1107
- size = Message_deblock_rf_header (hash, p_data, data_length);
1108
- if (!size) break; /* Poison Message */
1109
- p_data += size;
1110
- data_length -= size;
1111
- p_format = p_header->Format;
1112
- }
1113
- }
1114
- else
1115
- /* MQDLH: dead_letter_header */
1116
- if(strncmp(p_format, MQFMT_DEAD_LETTER_HEADER, MQ_FORMAT_LENGTH) == 0)
1117
- {
1118
- VALUE hash = rb_hash_new();
1119
- PMQDLH p_header = (PMQDLH)p_data;
1120
-
1121
- if(trace_level>2)
1122
- printf("WMQ::Message#deblock Found dead_letter_header\n");
1123
-
1124
- if(memcmp(p_header->StrucId, MQDLH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1125
- {
1126
- if(trace_level>1)
1127
- printf("WMQ::Message#deblock MQFMT_DEAD_LETTER_HEADER received, but message does not contain MQDLH\n");
1128
- break; /* Bad Message received, do not deblock headers */
1129
- }
1130
- else
1131
- {
1132
- Message_from_mqdlh(hash, p_header);
1133
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_dead_letter_header));
1134
- rb_ary_push(headers, hash);
1135
- size = sizeof(MQDLH);
1136
- p_data += size;
1137
- data_length -= size;
1138
- p_format = p_header->Format;
1139
- }
1140
- }
1141
- else
1142
- /* MQCIH: cics */
1143
- if(strncmp(p_format, MQFMT_CICS, MQ_FORMAT_LENGTH) == 0)
1144
- {
1145
- VALUE hash = rb_hash_new();
1146
- PMQCIH p_header = (PMQCIH)p_data;
1147
-
1148
- if(trace_level>2)
1149
- printf("WMQ::Message#deblock Found cics\n");
1150
-
1151
- if(memcmp(p_header->StrucId, MQCIH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1152
- {
1153
- if(trace_level>1)
1154
- printf("WMQ::Message#deblock MQFMT_CICS received, but message does not contain MQCIH\n");
1155
- break; /* Bad Message received, do not deblock headers */
1156
- }
1157
- else
1158
- {
1159
- Message_from_mqcih(hash, p_header);
1160
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_cics));
1161
- rb_ary_push(headers, hash);
1162
- size = p_header->StrucLength;
1163
- p_data += size;
1164
- data_length -= size;
1165
- p_format = p_header->Format;
1166
- }
1167
- }
1168
- else
1169
- /* MQDH: dist_header */
1170
- if(strncmp(p_format, MQFMT_DIST_HEADER, MQ_FORMAT_LENGTH) == 0)
1171
- {
1172
- VALUE hash = rb_hash_new();
1173
- PMQDH p_header = (PMQDH)p_data;
1174
-
1175
- if(trace_level>2)
1176
- printf("WMQ::Message#deblock Found dist_header\n");
1177
-
1178
- if(memcmp(p_header->StrucId, MQDH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1179
- {
1180
- if(trace_level>1)
1181
- printf("WMQ::Message#deblock MQFMT_DIST_HEADER received, but message does not contain MQDH\n");
1182
- break; /* Bad Message received, do not deblock headers */
1183
- }
1184
- else
1185
- {
1186
- Message_from_mqdh(hash, p_header);
1187
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_dist_header));
1188
- rb_ary_push(headers, hash);
1189
- size = p_header->StrucLength;
1190
- p_data += size;
1191
- data_length -= size;
1192
- p_format = p_header->Format;
1193
- }
1194
- }
1195
- else
1196
- /* MQIIH: ims */
1197
- if(strncmp(p_format, MQFMT_IMS, MQ_FORMAT_LENGTH) == 0)
1198
- {
1199
- VALUE hash = rb_hash_new();
1200
- PMQIIH p_header = (PMQIIH)p_data;
1201
-
1202
- if(trace_level>2)
1203
- printf("WMQ::Message#deblock Found ims\n");
1204
-
1205
- if(memcmp(p_header->StrucId, MQIIH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1206
- {
1207
- if(trace_level>1)
1208
- printf("WMQ::Message#deblock MQFMT_IMS received, but message does not contain MQIIH\n");
1209
- break; /* Bad Message received, do not deblock headers */
1210
- }
1211
- else
1212
- {
1213
- Message_from_mqiih(hash, p_header);
1214
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_ims));
1215
- rb_ary_push(headers, hash);
1216
- size = p_header->StrucLength;
1217
- p_data += size;
1218
- data_length -= size;
1219
- p_format = p_header->Format;
1220
- }
1221
- }
1222
- else
1223
- /* MQRMH: ref_msg_header */
1224
- if(strncmp(p_format, MQFMT_REF_MSG_HEADER, MQ_FORMAT_LENGTH) == 0)
1225
- {
1226
- VALUE hash = rb_hash_new();
1227
- PMQRMH p_header = (PMQRMH)p_data;
1228
-
1229
- if(trace_level>2)
1230
- printf("WMQ::Message#deblock Found ref_msg_header\n");
1231
-
1232
- if(memcmp(p_header->StrucId, MQRMH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1233
- {
1234
- if(trace_level>1)
1235
- printf("WMQ::Message#deblock MQFMT_REF_MSG_HEADER received, but message does not contain MQRMH\n");
1236
- break; /* Bad Message received, do not deblock headers */
1237
- }
1238
- else
1239
- {
1240
- Message_from_mqrmh(hash, p_header);
1241
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_ref_msg_header));
1242
- rb_ary_push(headers, hash);
1243
- size = p_header->StrucLength;
1244
- p_data += size;
1245
- data_length -= size;
1246
- p_format = p_header->Format;
1247
- }
1248
- }
1249
- else
1250
- /* MQTM: trigger */
1251
- if(strncmp(p_format, MQFMT_TRIGGER, MQ_FORMAT_LENGTH) == 0)
1252
- {
1253
- VALUE hash = rb_hash_new();
1254
- PMQTM p_header = (PMQTM)p_data;
1255
-
1256
- if(trace_level>2)
1257
- printf("WMQ::Message#deblock Found trigger\n");
1258
-
1259
- if(memcmp(p_header->StrucId, MQTM_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1260
- {
1261
- if(trace_level>1)
1262
- printf("WMQ::Message#deblock MQFMT_TRIGGER received, but message does not contain MQTM\n");
1263
- break; /* Bad Message received, do not deblock headers */
1264
- }
1265
- else
1266
- {
1267
- Message_from_mqtm(hash, p_header);
1268
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_trigger));
1269
- rb_ary_push(headers, hash);
1270
- size = sizeof(MQTM);
1271
- p_data += size;
1272
- data_length -= size;
1273
- break;
1274
- }
1275
- }
1276
- else
1277
- /* MQWIH: work_info_header */
1278
- if(strncmp(p_format, MQFMT_WORK_INFO_HEADER, MQ_FORMAT_LENGTH) == 0)
1279
- {
1280
- VALUE hash = rb_hash_new();
1281
- PMQWIH p_header = (PMQWIH)p_data;
1282
-
1283
- if(trace_level>2)
1284
- printf("WMQ::Message#deblock Found work_info_header\n");
1285
-
1286
- if(memcmp(p_header->StrucId, MQWIH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1287
- {
1288
- if(trace_level>1)
1289
- printf("WMQ::Message#deblock MQFMT_WORK_INFO_HEADER received, but message does not contain MQWIH\n");
1290
- break; /* Bad Message received, do not deblock headers */
1291
- }
1292
- else
1293
- {
1294
- Message_from_mqwih(hash, p_header);
1295
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_work_info_header));
1296
- rb_ary_push(headers, hash);
1297
- size = p_header->StrucLength;
1298
- p_data += size;
1299
- data_length -= size;
1300
- p_format = p_header->Format;
1301
- }
1302
- }
1303
- else
1304
- /* MQXQH: xmit_q_header */
1305
- if(strncmp(p_format, MQFMT_XMIT_Q_HEADER, MQ_FORMAT_LENGTH) == 0)
1306
- {
1307
- VALUE hash = rb_hash_new();
1308
- PMQXQH p_header = (PMQXQH)p_data;
1309
-
1310
- if(trace_level>2)
1311
- printf("WMQ::Message#deblock Found xmit_q_header\n");
1312
-
1313
- if(memcmp(p_header->StrucId, MQXQH_STRUC_ID, sizeof(p_header->StrucId)) != 0)
1314
- {
1315
- if(trace_level>1)
1316
- printf("WMQ::Message#deblock MQFMT_XMIT_Q_HEADER received, but message does not contain MQXQH\n");
1317
- break; /* Bad Message received, do not deblock headers */
1318
- }
1319
- else
1320
- {
1321
- Message_from_mqxqh(hash, p_header);
1322
- rb_hash_aset(hash, ID2SYM(ID_header_type), ID2SYM(ID_xmit_q_header));
1323
- rb_ary_push(headers, hash);
1324
- size = sizeof(MQXQH);
1325
- p_data += size;
1326
- data_length -= size;
1327
- p_format = p_header->MsgDesc.Format;
1328
- }
1329
- }
1330
- else
1331
- {
1332
- break;
1333
- }
1334
- }
1335
- /* Copy the last recognised header found to the Descriptor */
1336
- if(p_format && p_format != pmqmd->Format)
1337
- {
1338
- strncpy(pmqmd->Format, p_format, MQ_FORMAT_LENGTH);
1339
- }
1340
-
1341
- Message_from_mqmd(descriptor, pmqmd);
1342
- rb_funcall(self, ID_descriptor_set, 1, descriptor);
1343
- rb_funcall(self, ID_headers_set, 1, headers);
1344
- rb_funcall(self, ID_data_set, 1, rb_str_new(p_data, data_length));
1345
- }
1346
-
1347
- void Message_build_set_format(ID header_type, PMQBYTE p_format)
1348
- {
1349
- if(header_type == ID_rf_header_2) { memcpy(p_format, MQFMT_RF_HEADER_2, MQ_FORMAT_LENGTH); return;}
1350
- if(header_type == ID_rf_header) { memcpy(p_format, MQFMT_RF_HEADER, MQ_FORMAT_LENGTH); return;}
1351
- if(header_type == ID_dead_letter_header) { memcpy(p_format, MQFMT_DEAD_LETTER_HEADER, MQ_FORMAT_LENGTH); return;}
1352
- if(header_type == ID_cics) { memcpy(p_format, MQFMT_CICS, MQ_FORMAT_LENGTH); return;}
1353
- if(header_type == ID_dist_header) { memcpy(p_format, MQFMT_DIST_HEADER, MQ_FORMAT_LENGTH); return;}
1354
- if(header_type == ID_ims) { memcpy(p_format, MQFMT_IMS, MQ_FORMAT_LENGTH); return;}
1355
- if(header_type == ID_ref_msg_header) { memcpy(p_format, MQFMT_REF_MSG_HEADER, MQ_FORMAT_LENGTH); return;}
1356
- if(header_type == ID_trigger) { memcpy(p_format, MQFMT_TRIGGER, MQ_FORMAT_LENGTH); return;}
1357
- if(header_type == ID_work_info_header) { memcpy(p_format, MQFMT_WORK_INFO_HEADER, MQ_FORMAT_LENGTH); return;}
1358
- if(header_type == ID_xmit_q_header) { memcpy(p_format, MQFMT_XMIT_Q_HEADER, MQ_FORMAT_LENGTH); return;}
1359
-
1360
- rb_raise(rb_eArgError, "Invalid/Unknown header_type supplied in WMQ::Message#headers array");
1361
- }
1362
-
1363
- /* --------------------------------------------------------------------------
1364
- * Build message headers
1365
- * --------------------------------------------------------------------------*/
1366
- int Message_build_header (VALUE hash, struct Message_build_header_arg* parg)
1367
- {
1368
- VALUE val = rb_hash_aref(hash, ID2SYM(ID_header_type));
1369
- PMQBYTE p_data = 0;
1370
-
1371
- if (!NIL_P(val) && (TYPE(val) == T_SYMBOL))
1372
- {
1373
- ID header_id = rb_to_id(val);
1374
- if (header_id == ID_rf_header_2) /* Build MQRFH2 */
1375
- {
1376
- Message_build_rf_header_2 (hash, parg);
1377
- }
1378
- else
1379
- if (header_id == ID_rf_header) /* Build MQRFH */
1380
- {
1381
- Message_build_rf_header (hash, parg);
1382
- }
1383
- else
1384
- if (header_id == ID_dead_letter_header) /* Build MQDLH */
1385
- {
1386
- static MQDLH MQDLH_DEF = {MQDLH_DEFAULT};
1387
- MQDLH_DEF.CodedCharSetId = MQCCSI_INHERIT;
1388
-
1389
- if(parg->trace_level>2)
1390
- printf ("WMQ::Message#build_header Found dead_letter_header\n");
1391
-
1392
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQDLH));
1393
-
1394
- memcpy(p_data, &MQDLH_DEF, sizeof(MQDLH));
1395
- Message_to_mqdlh(hash, (PMQDLH)p_data);
1396
-
1397
- if(parg->next_header_id)
1398
- {
1399
- Message_build_set_format(parg->next_header_id, ((PMQDLH)p_data)->Format);
1400
- }
1401
- else
1402
- {
1403
- memcpy(((PMQDLH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1404
- }
1405
-
1406
- *(parg->p_data_offset) += sizeof(MQDLH);
1407
-
1408
- if(parg->trace_level>2)
1409
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1410
- }
1411
- else
1412
- if (header_id == ID_cics) /* Build MQCIH */
1413
- {
1414
- static MQCIH MQCIH_DEF = {MQCIH_DEFAULT};
1415
-
1416
-
1417
- if(parg->trace_level>2)
1418
- printf ("WMQ::Message#build_header Found cics\n");
1419
-
1420
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQCIH));
1421
-
1422
- memcpy(p_data, &MQCIH_DEF, sizeof(MQCIH));
1423
- Message_to_mqcih(hash, (PMQCIH)p_data);
1424
-
1425
- if(parg->next_header_id)
1426
- {
1427
- Message_build_set_format(parg->next_header_id, ((PMQCIH)p_data)->Format);
1428
- }
1429
- else
1430
- {
1431
- memcpy(((PMQCIH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1432
- }
1433
-
1434
- *(parg->p_data_offset) += sizeof(MQCIH);
1435
-
1436
- if(parg->trace_level>2)
1437
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1438
- }
1439
- else
1440
- if (header_id == ID_dist_header) /* Build MQDH */
1441
- {
1442
- static MQDH MQDH_DEF = {MQDH_DEFAULT};
1443
-
1444
-
1445
- if(parg->trace_level>2)
1446
- printf ("WMQ::Message#build_header Found dist_header\n");
1447
-
1448
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQDH));
1449
-
1450
- memcpy(p_data, &MQDH_DEF, sizeof(MQDH));
1451
- Message_to_mqdh(hash, (PMQDH)p_data);
1452
-
1453
- if(parg->next_header_id)
1454
- {
1455
- Message_build_set_format(parg->next_header_id, ((PMQDH)p_data)->Format);
1456
- }
1457
- else
1458
- {
1459
- memcpy(((PMQDH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1460
- }
1461
-
1462
- *(parg->p_data_offset) += sizeof(MQDH);
1463
-
1464
- if(parg->trace_level>2)
1465
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1466
- }
1467
- else
1468
- if (header_id == ID_ims) /* Build MQIIH */
1469
- {
1470
- static MQIIH MQIIH_DEF = {MQIIH_DEFAULT};
1471
-
1472
-
1473
- if(parg->trace_level>2)
1474
- printf ("WMQ::Message#build_header Found ims\n");
1475
-
1476
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQIIH));
1477
-
1478
- memcpy(p_data, &MQIIH_DEF, sizeof(MQIIH));
1479
- Message_to_mqiih(hash, (PMQIIH)p_data);
1480
-
1481
- if(parg->next_header_id)
1482
- {
1483
- Message_build_set_format(parg->next_header_id, ((PMQIIH)p_data)->Format);
1484
- }
1485
- else
1486
- {
1487
- memcpy(((PMQIIH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1488
- }
1489
-
1490
- *(parg->p_data_offset) += sizeof(MQIIH);
1491
-
1492
- if(parg->trace_level>2)
1493
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1494
- }
1495
- else
1496
- if (header_id == ID_ref_msg_header) /* Build MQRMH */
1497
- {
1498
- static MQRMH MQRMH_DEF = {MQRMH_DEFAULT};
1499
-
1500
-
1501
- if(parg->trace_level>2)
1502
- printf ("WMQ::Message#build_header Found ref_msg_header\n");
1503
-
1504
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQRMH));
1505
-
1506
- memcpy(p_data, &MQRMH_DEF, sizeof(MQRMH));
1507
- Message_to_mqrmh(hash, (PMQRMH)p_data);
1508
-
1509
- if(parg->next_header_id)
1510
- {
1511
- Message_build_set_format(parg->next_header_id, ((PMQRMH)p_data)->Format);
1512
- }
1513
- else
1514
- {
1515
- memcpy(((PMQRMH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1516
- }
1517
-
1518
- *(parg->p_data_offset) += sizeof(MQRMH);
1519
-
1520
- if(parg->trace_level>2)
1521
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1522
- }
1523
- else
1524
- if (header_id == ID_trigger) /* Build MQTM */
1525
- {
1526
- static MQTM MQTM_DEF = {MQTM_DEFAULT};
1527
-
1528
-
1529
- if(parg->trace_level>2)
1530
- printf ("WMQ::Message#build_header Found trigger\n");
1531
-
1532
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQTM));
1533
-
1534
- memcpy(p_data, &MQTM_DEF, sizeof(MQTM));
1535
- Message_to_mqtm(hash, (PMQTM)p_data);
1536
-
1537
- *(parg->p_data_offset) += sizeof(MQTM);
1538
-
1539
- if(parg->trace_level>2)
1540
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1541
- }
1542
- else
1543
- if (header_id == ID_work_info_header) /* Build MQWIH */
1544
- {
1545
- static MQWIH MQWIH_DEF = {MQWIH_DEFAULT};
1546
-
1547
-
1548
- if(parg->trace_level>2)
1549
- printf ("WMQ::Message#build_header Found work_info_header\n");
1550
-
1551
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQWIH));
1552
-
1553
- memcpy(p_data, &MQWIH_DEF, sizeof(MQWIH));
1554
- Message_to_mqwih(hash, (PMQWIH)p_data);
1555
-
1556
- if(parg->next_header_id)
1557
- {
1558
- Message_build_set_format(parg->next_header_id, ((PMQWIH)p_data)->Format);
1559
- }
1560
- else
1561
- {
1562
- memcpy(((PMQWIH)p_data)->Format, parg->data_format, MQ_FORMAT_LENGTH);
1563
- }
1564
-
1565
- *(parg->p_data_offset) += sizeof(MQWIH);
1566
-
1567
- if(parg->trace_level>2)
1568
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1569
- }
1570
- else
1571
- if (header_id == ID_xmit_q_header) /* Build MQXQH */
1572
- {
1573
- static MQXQH MQXQH_DEF = {MQXQH_DEFAULT};
1574
-
1575
-
1576
- if(parg->trace_level>2)
1577
- printf ("WMQ::Message#build_header Found xmit_q_header\n");
1578
-
1579
- p_data = Message_autogrow_data_buffer(parg, sizeof(MQXQH));
1580
-
1581
- memcpy(p_data, &MQXQH_DEF, sizeof(MQXQH));
1582
- Message_to_mqxqh(hash, (PMQXQH)p_data);
1583
-
1584
- if(parg->next_header_id)
1585
- {
1586
- Message_build_set_format(parg->next_header_id, ((PMQXQH)p_data)->MsgDesc.Format);
1587
- }
1588
- else
1589
- {
1590
- memcpy(((PMQXQH)p_data)->MsgDesc.Format, parg->data_format, MQ_FORMAT_LENGTH);
1591
- }
1592
-
1593
- *(parg->p_data_offset) += sizeof(MQXQH);
1594
-
1595
- if(parg->trace_level>2)
1596
- printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
1597
- }
1598
- else
1599
- {
1600
- rb_raise(rb_eArgError, "Unknown :header_type supplied in WMQ::Message#headers array");
1601
- }
1602
- }
1603
- else
1604
- {
1605
- rb_raise(rb_eArgError, "Mandatory parameter :header_type missing from header entry in WMQ::Message#headers array");
1606
- }
1607
-
1608
- return 0; /* Continue */
1609
- }