rubywmq 1.1.1 → 2.0.0.pre

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.
@@ -0,0 +1,17 @@
1
+ dev:
2
+ qmgr_options:
3
+ :q_mgr_name: REID
4
+ input_queue:
5
+ :mode: :browse
6
+ :q_name: TEST.QUEUE
7
+ target_directory: messages
8
+
9
+ test:
10
+ qmgr_options:
11
+ :q_mgr_name: TEST.QMGR
12
+ :channel_name: SYSTEM.DEF.SVRCONN
13
+ :connection_name: remotehost(1414)
14
+ input_queue:
15
+ :mode: :browse
16
+ :q_name: TEST.QUEUE
17
+ target_directory: messages
@@ -1,27 +1,11 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
16
-
17
1
  require 'mkmf'
18
- require './generate/generate_reason'
19
- require './generate/generate_const'
20
- require './generate/generate_structs'
2
+ require File.join(File.dirname(__FILE__), 'generate', 'generate_reason')
3
+ require File.join(File.dirname(__FILE__), 'generate', 'generate_const')
4
+ require File.join(File.dirname(__FILE__), 'generate', 'generate_structs')
21
5
 
22
6
  include_path = ''
23
- if RUBY_PLATFORM =~ /mswin32/
24
- include_path = 'C:\Program Files\IBM\WebSphere MQ\Tools\c\include'
7
+ if RUBY_PLATFORM =~ /win|mingw/i
8
+ include_path = 'C:\Program Files\IBM\WebSphere MQ\tools\c\include'
25
9
  dir_config('mqm', include_path, '.')
26
10
  else
27
11
  include_path = '/opt/mqm/inc'
@@ -37,7 +21,7 @@ end
37
21
 
38
22
  # Generate Source Files
39
23
  GenerateReason.generate(include_path+'/')
40
- GenerateConst.generate(include_path+'/', 'lib')
24
+ GenerateConst.generate(include_path+'/', File.dirname(__FILE__) + '/../lib/wmq')
41
25
  GenerateStructs.new(include_path+'/', 'generate').generate
42
26
 
43
27
  # Generate Makefile
@@ -1,21 +1,5 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
1
  #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
16
-
17
- #
18
- # NOTE: Do NOT use this file unless the platform being requested is not supported
2
+ # NOTE: Do NOT use this file unless the platform being used is not supported
19
3
  # directly by Ruby WMQ. Ruby WMQ already supports automatic dynamic loading on
20
4
  # Windows, Solaris and Linux
21
5
  #
@@ -29,12 +13,12 @@ unless (RUBY_PLATFORM =~ /win/i) || (RUBY_PLATFORM =~ /solaris/i) || (RUBY_PLATF
29
13
  include_path = '/opt/mqm/inc'
30
14
  dir_config('mqm', include_path, '/opt/mqm/lib')
31
15
  have_library('mqic')
32
-
16
+
33
17
  # Generate Source Files # Could check if not already present
34
18
  GenerateReason.generate(include_path+'/')
35
19
  GenerateConst.generate(include_path+'/', '../../lib/wmq')
36
20
  GenerateStructs.new(include_path+'/', '../../generate').generate
37
-
21
+
38
22
  have_header('cmqc.h')
39
23
  create_makefile('wmq_client')
40
24
  end
@@ -1,6 +1,7 @@
1
+ # Extract Constants from the WebSphere MQ header files
1
2
  class GenerateConst
2
-
3
- #Extract Constants from Header files
3
+
4
+ # Extract Constants from Header files
4
5
  def GenerateConst.extract_const(filename, const_prefix, start_exp=nil, end_exp=nil)
5
6
  @constants = []
6
7
  active = if start_exp then false else true end # Sure there is a better way
@@ -23,8 +24,8 @@ class GenerateConst
23
24
  end
24
25
  @constants
25
26
  end
26
-
27
- #Extract MQ Constants from Header files
27
+
28
+ # Extract MQ Constants from Header files
28
29
  def GenerateConst.rb_const(filename, const_prefix, exclude_exp=nil)
29
30
  str = ''
30
31
  GenerateConst.extract_const(filename, const_prefix).each do |item|
@@ -42,7 +43,7 @@ class GenerateConst
42
43
  end
43
44
  str
44
45
  end
45
-
46
+
46
47
  def GenerateConst.config(filename, prefix)
47
48
  str = "# WMQ::QueueManager execute commands\n"
48
49
  str << "execute_commands:\n"
@@ -55,24 +56,10 @@ class GenerateConst
55
56
  end
56
57
  str
57
58
  end
58
-
59
+
59
60
  def GenerateConst.wmq_const(path)
60
61
  str = <<END_OF_STRING
61
62
  ################################################################################
62
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
63
- #
64
- # Licensed under the Apache License, Version 2.0 (the "License");
65
- # you may not use this file except in compliance with the License.
66
- # You may obtain a copy of the License at
67
- #
68
- # http://www.apache.org/licenses/LICENSE-2.0
69
- #
70
- # Unless required by applicable law or agreed to in writing, software
71
- # distributed under the License is distributed on an "AS IS" BASIS,
72
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
73
- # See the License for the specific language governing permissions and
74
- # limitations under the License.
75
- ################################################################################
76
63
  #
77
64
  # WARNING: DO NOT MODIFY THIS FILE
78
65
  #
@@ -81,18 +68,18 @@ class GenerateConst
81
68
  ################################################################################
82
69
  module WMQ
83
70
  END_OF_STRING
84
- [ ['Connect Options','cmqc.h','MQCNO_',/(VERSION)|(CONN_TAG)|(HANDLE_SHARE)/],
71
+ [ ['Connect Options','cmqc.h','MQCNO_',/(VERSION)|(CONN_TAG)|(HANDLE_SHARE)|(_LENGTH)/],
85
72
  ['Open Options', 'cmqc.h','MQOO_' ],
86
73
  ['Close Options', 'cmqc.h','MQCO_'],
87
74
  ['Match Options', 'cmqc.h','MQMO_'],
88
75
  ['Message Format Options', 'cmqc.h','MQFMT_',/(_ARRAY)/],
89
- ['Get Message Options', 'cmqc.h','MQGMO_',/(VERSION)/],
76
+ ['Get Message Options', 'cmqc.h','MQGMO_',/(VERSION)|(LENGTH)|(MQGMO_BROWSE_HANDLE)|(MQGMO_BROWSE_CO_OP)/],
90
77
  ['Transport Types', 'cmqxc.h','MQXPT_'] ,
91
78
  ['Report Options', 'cmqc.h', 'MQRO_'],
92
79
  ['Message Types', 'cmqc.h', 'MQMT_'],
93
80
  ['Expiry', 'cmqc.h', 'MQEI_'],
94
81
  ['Feedback Values', 'cmqc.h', 'MQFB_'],
95
- ['Encoding Values', 'cmqc.h', 'MQENC_'],
82
+ ['Encoding Values', 'cmqc.h', 'MQENC_',/(MQENC_NORMAL)|(MQENC_REVERSED)|(MQENC_S390)|(MQENC_TNS)/],
96
83
  ['Coded Character Set Identifiers', 'cmqc.h', 'MQCCSI_'],
97
84
  ['Priority', 'cmqc.h', 'MQPRI_'],
98
85
  ['Persistence', 'cmqc.h', 'MQPER_'],
@@ -108,24 +95,10 @@ END_OF_STRING
108
95
  end
109
96
  str << "end\n"
110
97
  end
111
-
98
+
112
99
  def GenerateConst.admin_consts(path)
113
100
  str = <<END_OF_STRING
114
101
  ################################################################################
115
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
116
- #
117
- # Licensed under the Apache License, Version 2.0 (the "License");
118
- # you may not use this file except in compliance with the License.
119
- # You may obtain a copy of the License at
120
- #
121
- # http://www.apache.org/licenses/LICENSE-2.0
122
- #
123
- # Unless required by applicable law or agreed to in writing, software
124
- # distributed under the License is distributed on an "AS IS" BASIS,
125
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
126
- # See the License for the specific language governing permissions and
127
- # limitations under the License.
128
- ################################################################################
129
102
  #
130
103
  # WARNING: DO NOT MODIFY THIS FILE
131
104
  #
@@ -142,7 +115,7 @@ END_OF_STRING
142
115
  str << "\n# #{item[0]}\n"
143
116
  str << GenerateConst.rb_const("#{path}/#{item[1]}", item[2], item[3])
144
117
  end
145
- GenerateConst.extract_const(path+'cmqc.h', 'MQ', /Queue\sAttributes/, /typedef/).each do |item|
118
+ GenerateConst.extract_const(path+'cmqc.h', 'MQ', /Queue\s+Attributes/, /General\s+Constants/).each do |item|
146
119
  str << " %-30s = #{item[1]}\n" % item[0]
147
120
  end
148
121
  str << "# Admin constants from cmqcfc.h\n"
@@ -151,14 +124,14 @@ END_OF_STRING
151
124
  end
152
125
  str << "end\n"
153
126
  end
154
-
127
+
155
128
  def self.generate(path, target_path='')
156
- File.open(File.join(target_path,'wmq_const_admin.rb'), 'w') {|file| file.write(GenerateConst.admin_consts(path))}
129
+ File.open(File.join(target_path,'constants_admin.rb'), 'w') {|file| file.write(GenerateConst.admin_consts(path))}
157
130
  puts 'Generated wmq_const_admin.rb'
158
- File.open(File.join(target_path,'wmq_const.rb'), 'w') {|file| file.write(GenerateConst.wmq_const(path))}
131
+ File.open(File.join(target_path,'constants.rb'), 'w') {|file| file.write(GenerateConst.wmq_const(path))}
159
132
  puts 'Generated wmq_const.rb'
160
133
  end
161
- end
134
+ end
162
135
 
163
136
  if $0 == __FILE__
164
137
  path = ARGV[0] || raise("Mandatory parameter: 'WebSphere MQ Include path' is missing")
@@ -1,6 +1,6 @@
1
1
  class GenerateReason
2
2
 
3
- #Extract Error Code Constants from Header files
3
+ # Extract Error Code Constants from Header files
4
4
  def GenerateReason.extract_const(filename, const_prefix)
5
5
  @constants = []
6
6
  File.open(filename) do |file|
@@ -16,8 +16,8 @@ class GenerateReason
16
16
  end
17
17
  @constants
18
18
  end
19
-
20
- #Extract Error Code Constants from Header files
19
+
20
+ # Extract Error Code Constants from Header files
21
21
  # Uses lazy print to collect duplicate values
22
22
  def GenerateReason.reason_case(filename, prefix)
23
23
  last_rc = nil
@@ -36,8 +36,8 @@ class GenerateReason
36
36
  end
37
37
  str
38
38
  end
39
-
40
- # The WebSphere MQ header files have several duplicate values,
39
+
40
+ # The WebSphere MQ header files have several duplicate values,
41
41
  # so need to exclude duplicates.
42
42
  def GenerateReason.selector_case(filename, prefix, excludes=nil, &block)
43
43
  GenerateReason.extract_const(filename,prefix).each do |item|
@@ -46,24 +46,10 @@ class GenerateReason
46
46
  block.call item
47
47
  end
48
48
  end
49
-
49
+
50
50
  def GenerateReason.wmq_reason(path)
51
51
  str = <<END_OF_STRING
52
52
  /* --------------------------------------------------------------------------
53
- * Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
54
- *
55
- * Licensed under the Apache License, Version 2.0 (the "License");
56
- * you may not use this file except in compliance with the License.
57
- * You may obtain a copy of the License at
58
- *
59
- * http://www.apache.org/licenses/LICENSE-2.0
60
- *
61
- * Unless required by applicable law or agreed to in writing, software
62
- * distributed under the License is distributed on an "AS IS" BASIS,
63
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
64
- * See the License for the specific language governing permissions and
65
- * limitations under the License.
66
- * --------------------------------------------------------------------------
67
53
  *
68
54
  * WARNING: DO NOT MODIFY THIS FILE
69
55
  *
@@ -97,9 +83,10 @@ END_OF_STRING
97
83
  [['cmqc.h', 'MQIA_'],
98
84
  ['cmqcfc.h', 'MQIACF_', ['MQIACF_ERROR_ID',
99
85
  'MQIACF_QUIESCE']],
100
- ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
101
- 'MQIACH_BYTES_RCVD',
102
- 'MQIACH_BUFFERS_RCVD']],
86
+ ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
87
+ 'MQIACH_BYTES_RCVD',
88
+ 'MQIACH_BUFFERS_RCVD',
89
+ 'MQIACH_MSGS_RCVD']],
103
90
  ['cmqcfc.h', 'MQIAMO_'],
104
91
  ['cmqcfc.h', 'MQIAMO64_', ['MQIAMO64_AVG_Q_TIME',
105
92
  'MQIAMO64_Q_TIME_AVG',
@@ -125,7 +112,7 @@ END_OF_STRING
125
112
  str_switch << " case %-30s: return ID_#{id};\n" % const[0]
126
113
  str_id_init << " ID_%-25s = rb_intern(\"#{id}\");\n" % id
127
114
  str << "static ID ID_#{id};\n"
128
- end
115
+ end
129
116
  end
130
117
 
131
118
  str << <<END_OF_STRING
@@ -156,8 +143,8 @@ END_OF_STRING
156
143
  [['cmqc.h', 'MQIA_'],
157
144
  ['cmqcfc.h', 'MQIACF_', ['MQIACF_ERROR_ID',
158
145
  'MQIACF_QUIESCE']],
159
- ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
160
- 'MQIACH_BYTES_RCVD',
146
+ ['cmqcfc.h', 'MQIACH_', ['MQIACH_CURRENT_SEQ_NUMBER',
147
+ 'MQIACH_BYTES_RCVD',
161
148
  'MQIACH_BUFFERS_RCVD']],
162
149
  ['cmqcfc.h', 'MQIAMO_'],
163
150
  ['cmqcfc.h', 'MQIAMO64_', ['MQIAMO64_AVG_Q_TIME',
@@ -169,8 +156,8 @@ END_OF_STRING
169
156
  ].each do |item|
170
157
  str << " /* Consteants #{item[1]}* from #{item[0]} */\n"
171
158
  GenerateReason.selector_case(path+item[0], item[1], item[2]) do |const|
172
- str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
173
- end
159
+ str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
160
+ end
174
161
  end
175
162
  str << "\n *selector_type = MQIT_STRING;\n\n"
176
163
  # Character Selectors for Object Attributes
@@ -182,16 +169,16 @@ END_OF_STRING
182
169
  # ['cmqc.h', 'MQBA_'],
183
170
  # ['cmqcfc.h', 'MQBACF_'],
184
171
  # Group Selectors for Object Attributes
185
- # ['cmqcfc.h', 'MQGACF_']
172
+ # ['cmqcfc.h', 'MQGACF_']
186
173
  ].each do |item|
187
174
  str << " /* Constants #{item[1]}* from #{item[0]} */\n"
188
175
  GenerateReason.selector_case(path+item[0], item[1], item[2]) do |const|
189
- str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
190
- end
176
+ str << " if(selector_id == %-32s{ *selector = #{const[0]}; return;}\n" % "ID_#{const[0].gsub(item[1],'').downcase})"
177
+ end
191
178
  end
192
179
 
193
180
  str << <<END_OF_STRING
194
-
181
+
195
182
  rb_raise(rb_eArgError, "WMQ::QueueManager#execute [wmq_selector] Unknown selector supplied");
196
183
  }
197
184
 
@@ -208,9 +195,9 @@ END_OF_STRING
208
195
  end
209
196
  id = const[0].gsub('MQCMD_','').downcase
210
197
  str_id_init << " ID_%-25s = rb_intern(\"#{id}\");\n" % id
211
- str_if << "if(command_id == %-28s{ command = #{const[0]}; }\n" % "ID_#{const[0].gsub('MQCMD_','').downcase})"
198
+ str_if << "if(command_id == %-28s{ command = #{const[0]}; }\n" % "ID_#{const[0].gsub('MQCMD_','').downcase})"
212
199
  str << "static ID ID_#{id};\n"
213
- end
200
+ end
214
201
  str << <<END_OF_STRING
215
202
 
216
203
  void QueueManager_command_id_init()
@@ -221,7 +208,7 @@ void QueueManager_command_id_init()
221
208
  MQLONG wmq_command_lookup(ID command_id)
222
209
  {
223
210
  MQLONG command = 0;
224
- #{str_if}
211
+ #{str_if}
225
212
  else
226
213
  {
227
214
  rb_raise(rb_eArgError, "WMQ::QueueManager#execute [wmq_command_lookup] Unknown command supplied");
@@ -232,7 +219,7 @@ MQLONG wmq_command_lookup(ID command_id)
232
219
  END_OF_STRING
233
220
  str
234
221
  end
235
-
222
+
236
223
  def self.generate(path)
237
224
  File.open('wmq_reason.c', 'w') {|file| file.write(GenerateReason.wmq_reason(path))}
238
225
  puts 'Generated wmq_reason.c'
@@ -1,30 +1,15 @@
1
- ################################################################################
2
- # Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- ################################################################################
16
1
  require 'erb'
17
2
 
18
3
  class GenerateStructs
19
-
4
+
20
5
  @@field_ignore_list = [ 'StrucId', 'Version' , 'StrucLength']
21
-
6
+
22
7
  # Store path to WebSphere MQ Structures
23
8
  def initialize(wmq_includepath, templates_path='.')
24
9
  @path = wmq_includepath
25
10
  @templates_path = templates_path
26
11
  end
27
-
12
+
28
13
  def extract_struct (filename, struct_name)
29
14
  properties_list = []
30
15
  line_number = 0
@@ -51,7 +36,7 @@ class GenerateStructs
51
36
  end
52
37
  properties_list
53
38
  end
54
-
39
+
55
40
  def rubyize_name(name)
56
41
  name.gsub(/::/, '/').
57
42
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
@@ -59,7 +44,7 @@ class GenerateStructs
59
44
  tr("-", "_").
60
45
  downcase
61
46
  end
62
-
47
+
63
48
  def self.test_rubyize_name
64
49
  test = self.new
65
50
  [['a', 'a'],
@@ -75,11 +60,11 @@ class GenerateStructs
75
60
  raise("rubyize_name('#{item[0]}') == #{str} != '#{item[1]})") if str != item[1]
76
61
  end
77
62
  end
78
-
63
+
79
64
  def generate_structs(erb)
80
65
  erb.result(binding)
81
66
  end
82
-
67
+
83
68
  def generate(target_filename = 'wmq_structs.c')
84
69
  erb = nil
85
70
  File.open(@templates_path+'/wmq_structs.erb') { |file| erb = ERB.new(file.read) }
@@ -1,20 +1,4 @@
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
-
1
+ <%
18
2
  symbols = {
19
3
  'descriptor='=>nil,
20
4
  'headers='=>nil,
@@ -68,7 +52,7 @@
68
52
  # Transmission-queue header - Todo: Need to deal with MQMDE
69
53
  {:file=>'cmqc.h', :struct=>'MQXQH', :header=>'xmit_q_header', :format=>'MsgDesc.Format'},
70
54
  ]
71
-
55
+
72
56
  wmq_structs.each do |struct|
73
57
  # Parse WebSphere MQ 'C' Header file and extract elements
74
58
  elements = extract_struct(@path+'/'+struct[:file], struct[:struct])
@@ -84,20 +68,6 @@
84
68
  end
85
69
  %>
86
70
  /* --------------------------------------------------------------------------
87
- * Copyright 2006 J. Reid Morrison. Dimension Solutions, Inc.
88
- *
89
- * Licensed under the Apache License, Version 2.0 (the "License");
90
- * you may not use this file except in compliance with the License.
91
- * You may obtain a copy of the License at
92
- *
93
- * http://www.apache.org/licenses/LICENSE-2.0
94
- *
95
- * Unless required by applicable law or agreed to in writing, software
96
- * distributed under the License is distributed on an "AS IS" BASIS,
97
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
98
- * See the License for the specific language governing permissions and
99
- * limitations under the License.
100
- * --------------------------------------------------------------------------
101
71
  *
102
72
  * WARNING: DO NOT MODIFY THIS FILE
103
73
  *
@@ -110,16 +80,16 @@
110
80
  /* --------------------------------------------------------------------------
111
81
  * Static's to hold Symbols
112
82
  * --------------------------------------------------------------------------*/
113
- <%
83
+ <%
114
84
  header_file = 'cmqc.h'
115
85
  struct = 'MQMD'
116
86
 
117
87
  # Define static variables to hold Ruby symbols
118
88
  key_list = symbols.keys.sort
119
- key_list.each do |key, value|
89
+ key_list.each do |key, value|
120
90
  %><%="static ID ID_#{key.sub('=', '_set')};\n" %><%
121
91
  end
122
-
92
+
123
93
  # initialize symbols
124
94
  %>
125
95
  /* --------------------------------------------------------------------------
@@ -127,7 +97,7 @@
127
97
  * --------------------------------------------------------------------------*/
128
98
  void wmq_structs_id_init()
129
99
  {
130
- <% key_list.each do |key, value|
100
+ <% key_list.each do |key, value|
131
101
  %><%=" ID_%-20s = rb_intern(\"%s\");\n"% [key.sub('=', '_set'), key] %><%
132
102
  end
133
103
  %>}
@@ -145,18 +115,18 @@ void Message_from_<%=struct_name.downcase%>(VALUE hash, <%=struct_name%>* <%=var
145
115
  {
146
116
  VALUE str;
147
117
  size_t size;
148
- size_t length;
118
+ size_t length;
149
119
  size_t i;
150
120
  char* pChar;
151
-
121
+
152
122
  <%
153
123
  elements.each do |item|
154
124
  type = item[0]
155
125
  name = item[1]
156
-
126
+
157
127
  next if @@field_ignore_list.include?(name) ||
158
128
  (name=='Format' && struct[:header])
159
-
129
+
160
130
  match = /(MQ\D+)/.match(type)
161
131
  type = "#{match[1]}S" if match[1] != type
162
132
  %><%= if type == 'MQMDS'
@@ -164,25 +134,25 @@ void Message_from_<%=struct_name.downcase%>(VALUE hash, <%=struct_name%>* <%=var
164
134
  else
165
135
  " %-16s(hash, %-30s #{variable}->%s)\n" % ["WMQ_#{type}2HASH", rubyize_name(name)+',',name]
166
136
  end %><%
167
- end
137
+ end
168
138
  %>}
169
139
 
170
140
  static int Message_to_<%=struct_name.downcase%>_each (VALUE key, VALUE value, <%=struct_name%>* p<%=struct_name.downcase%>)
171
141
  {
172
142
  VALUE str;
173
143
  size_t size;
174
- size_t length;
144
+ size_t length;
175
145
  VALUE val;
176
146
  ID id = rb_to_id(key);
177
-
147
+
178
148
  <% contains = nil
179
149
  elements.each do |item|
180
150
  type = item[0]
181
151
  name = item[1]
182
-
152
+
183
153
  next if @@field_ignore_list.include?(name) ||
184
154
  (name=='Format' && struct[:header])
185
-
155
+
186
156
  match = /(MQ\D+)/.match(type)
187
157
  type = "#{match[1]}S" if match[1] != type
188
158
  %><%= if type == 'MQMDS'
@@ -198,9 +168,9 @@ static int Message_to_<%=struct_name.downcase%>_each (VALUE key, VALUE value, <%
198
168
  else<% end
199
169
  end
200
170
  %><%=struct[:header]?" if(id != ID_header_type)":""%><%
201
- if contains
171
+ if contains
202
172
  %> {
203
- Message_to_<%= contains%>_each(key, value, &pmqxqh->MsgDesc);
173
+ Message_to_<%= contains%>_each(key, value, &pmqxqh->MsgDesc);
204
174
  }<%
205
175
  else%>
206
176
  {
@@ -215,7 +185,7 @@ void Message_to_<%=struct_name.downcase%>(VALUE hash, <%=struct_name%>* p<%=stru
215
185
  {
216
186
  rb_hash_foreach(hash, Message_to_<%=struct_name.downcase%>_each, (VALUE)p<%=struct_name.downcase%>);
217
187
  }
218
- <% end # wmq_structs.each
188
+ <% end # wmq_structs.each
219
189
  %>
220
190
 
221
191
  /* --------------------------------------------------------------------------
@@ -240,10 +210,10 @@ void Message_deblock(VALUE self, PMQMD pmqmd, PMQBYTE p_buffer, MQLONG total_len
240
210
  {
241
211
  VALUE hash = rb_hash_new();
242
212
  P<%=struct[:struct]%> p_header = (P<%=struct[:struct]%>)p_data;
243
-
213
+
244
214
  if(trace_level>2)
245
215
  printf("WMQ::Message#deblock Found <%=struct[:header]%>\n");
246
-
216
+
247
217
  if(memcmp(p_header->StrucId, <%=struct[:struct_id] || "#{struct[:struct].upcase}_STRUC_ID"%>, sizeof(p_header->StrucId)) != 0)
248
218
  {
249
219
  if(trace_level>1)
@@ -277,7 +247,7 @@ void Message_deblock(VALUE self, PMQMD pmqmd, PMQBYTE p_buffer, MQLONG total_len
277
247
  else
278
248
  <%
279
249
  end
280
- end # wmq_structs.each
250
+ end # wmq_structs.each
281
251
  %> {
282
252
  break;
283
253
  }
@@ -287,7 +257,7 @@ void Message_deblock(VALUE self, PMQMD pmqmd, PMQBYTE p_buffer, MQLONG total_len
287
257
  {
288
258
  strncpy(pmqmd->Format, p_format, MQ_FORMAT_LENGTH);
289
259
  }
290
-
260
+
291
261
  Message_from_mqmd(descriptor, pmqmd);
292
262
  rb_funcall(self, ID_descriptor_set, 1, descriptor);
293
263
  rb_funcall(self, ID_headers_set, 1, headers);
@@ -302,8 +272,8 @@ void Message_build_set_format(ID header_type, PMQBYTE p_format)
302
272
  %> if(header_type == ID_<%=struct[:header]%>) { memcpy(p_format, MQFMT_<%=struct[:header].upcase%>, MQ_FORMAT_LENGTH); return;}
303
273
  <%
304
274
  end
305
- end # wmq_structs.each
306
-
275
+ end # wmq_structs.each
276
+
307
277
  %>
308
278
  rb_raise(rb_eArgError, "Invalid/Unknown header_type supplied in WMQ::Message#headers array");
309
279
  }
@@ -332,7 +302,7 @@ int Message_build_header (VALUE hash, struct Message_build_header_arg* parg)
332
302
 
333
303
  if(parg->trace_level>2)
334
304
  printf ("WMQ::Message#build_header Found <%=struct[:header]%>\n");
335
-
305
+
336
306
  p_data = Message_autogrow_data_buffer(parg, sizeof(<%=struct[:struct]%>));
337
307
 
338
308
  memcpy(p_data, &<%=struct[:struct]%>_DEF, sizeof(<%=struct[:struct]%>));
@@ -351,13 +321,13 @@ int Message_build_header (VALUE hash, struct Message_build_header_arg* parg)
351
321
 
352
322
  if(parg->trace_level>2)
353
323
  printf ("WMQ::Message#build_header data offset:%ld\n", (long)(*(parg->p_data_offset)));
354
- <% end
324
+ <% end
355
325
  %> }
356
326
  else
357
327
  <%
358
328
  end
359
- end # wmq_structs.each
360
-
329
+ end # wmq_structs.each
330
+
361
331
  %> {
362
332
  rb_raise(rb_eArgError, "Unknown :header_type supplied in WMQ::Message#headers array");
363
333
  }