rubywmq 2.0.0.pre3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +121 -106
- data/ext/Makefile +185 -0
- data/ext/decode_rfh.o +0 -0
- data/ext/wmq.o +0 -0
- data/ext/wmq.so +0 -0
- data/ext/wmq_message.o +0 -0
- data/ext/wmq_mq_load.o +0 -0
- data/ext/wmq_queue.o +0 -0
- data/ext/wmq_queue_manager.o +0 -0
- data/ext/wmq_reason.c +5301 -0
- data/ext/wmq_reason.o +0 -0
- data/ext/wmq_structs.c +1609 -0
- data/ext/wmq_structs.o +0 -0
- data/lib/wmq/version.rb +1 -1
- data/nbproject/private/config.properties +0 -0
- data/nbproject/private/private.properties +1 -0
- data/nbproject/private/private.xml +4 -0
- data/nbproject/private/rake-d.txt +5 -0
- data/nbproject/project.properties +11 -0
- data/nbproject/project.xml +17 -0
- data/rubywmq-2.0.0.pre3.gem +0 -0
- metadata +58 -53
data/ext/wmq_structs.c
ADDED
@@ -0,0 +1,1609 @@
|
|
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
|
+
}
|