ferocia-rubywmq 2.0.2 → 2.1.1

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.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -0
  3. data/Gemfile.lock +36 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +36 -47
  6. data/Rakefile +12 -76
  7. data/examples/each_a.rb +2 -3
  8. data/examples/each_b.rb +4 -5
  9. data/examples/each_header.rb +5 -6
  10. data/examples/files_to_q.rb +7 -8
  11. data/examples/get_a.rb +3 -5
  12. data/examples/get_client.rb +9 -10
  13. data/examples/put1_a.rb +2 -3
  14. data/examples/put1_b.rb +4 -7
  15. data/examples/put1_c.rb +6 -6
  16. data/examples/put_a.rb +0 -2
  17. data/examples/put_b.rb +5 -7
  18. data/examples/put_dlh.rb +11 -12
  19. data/examples/put_dynamic_q.rb +7 -7
  20. data/examples/put_group_a.rb +3 -4
  21. data/examples/put_group_b.rb +7 -7
  22. data/examples/put_rfh.rb +13 -11
  23. data/examples/put_rfh2_a.rb +9 -10
  24. data/examples/put_rfh2_b.rb +9 -9
  25. data/examples/put_xmit_q.rb +63 -8
  26. data/examples/q_to_files.rb +6 -7
  27. data/examples/request.rb +20 -18
  28. data/examples/server.rb +19 -16
  29. data/ext/extconf.rb +36 -26
  30. data/ext/extconf_client.rb +3 -3
  31. data/ext/generate/generate_const.rb +30 -23
  32. data/ext/generate/generate_reason.rb +70 -72
  33. data/ext/generate/generate_structs.rb +20 -19
  34. data/ext/generate/wmq_structs.erb +67 -67
  35. data/ext/wmq.c +0 -16
  36. data/ext/wmq.h +0 -16
  37. data/ext/wmq_message.c +8 -24
  38. data/ext/wmq_mq_load.c +5 -17
  39. data/ext/wmq_queue.c +73 -90
  40. data/ext/wmq_queue_manager.c +78 -88
  41. data/lib/wmq.rb +17 -11
  42. data/lib/wmq/message.rb +36 -34
  43. data/lib/wmq/queue_manager.rb +30 -23
  44. data/lib/wmq/version.rb +1 -1
  45. data/rubywmq.gemspec +44 -0
  46. data/test/queue_manager_test.rb +334 -0
  47. data/test/test_helper.rb +14 -0
  48. metadata +23 -34
  49. data/tests/test.rb +0 -318
@@ -2,18 +2,18 @@ require 'erb'
2
2
 
3
3
  class GenerateStructs
4
4
 
5
- @@field_ignore_list = [ 'StrucId', 'Version' , 'StrucLength']
5
+ @@field_ignore_list = ['StrucId', 'Version', 'StrucLength']
6
6
 
7
7
  # Store path to WebSphere MQ Structures
8
- def initialize(wmq_includepath, templates_path='.')
9
- @path = wmq_includepath
8
+ def initialize(wmq_includepath, templates_path = '.')
9
+ @path = wmq_includepath
10
10
  @templates_path = templates_path
11
11
  end
12
12
 
13
13
  def extract_struct (filename, struct_name)
14
14
  properties_list = []
15
- line_number = 0
16
- found = false
15
+ line_number = 0
16
+ found = false
17
17
  File.open(filename) do |file|
18
18
  file.each do |line|
19
19
  line_number += 1
@@ -26,7 +26,7 @@ class GenerateStructs
26
26
  return(properties_list) if line =~ /^\s*\};/
27
27
  match = /\s*(MQ\w+)\s+(\w+);/.match(line)
28
28
  if match
29
- type = match[1]
29
+ type = match[1]
30
30
  element = match[2]
31
31
  properties_list.push([type, element])
32
32
  end
@@ -39,22 +39,23 @@ class GenerateStructs
39
39
 
40
40
  def rubyize_name(name)
41
41
  name.gsub(/::/, '/').
42
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
43
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
44
- tr("-", "_").
45
- downcase
42
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
43
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
44
+ tr("-", "_").
45
+ downcase
46
46
  end
47
47
 
48
48
  def self.test_rubyize_name
49
49
  test = self.new
50
- [['a', 'a'],
51
- ['A', 'a'],
52
- ['Aa', 'aa'],
53
- ['AA', 'aa'],
54
- ['AaA', 'aa_a'],
55
- ['MyFieldName', 'my_field_name'],
56
- ['MMyFieldNName', 'm_my_field_n_name'],
57
- ['ABCdefGHIjKlMnOPQrSTuvwxYz', 'ab_cdef_gh_ij_kl_mn_op_qr_s_tuvwx_yz']
50
+ [
51
+ ['a', 'a'],
52
+ ['A', 'a'],
53
+ ['Aa', 'aa'],
54
+ ['AA', 'aa'],
55
+ ['AaA', 'aa_a'],
56
+ ['MyFieldName', 'my_field_name'],
57
+ ['MMyFieldNName', 'm_my_field_n_name'],
58
+ ['ABCdefGHIjKlMnOPQrSTuvwxYz', 'ab_cdef_gh_ij_kl_mn_op_qr_s_tuvwx_yz']
58
59
  ].each do |item|
59
60
  str = test.rubyize_name(item[0])
60
61
  raise("rubyize_name('#{item[0]}') == #{str} != '#{item[1]})") if str != item[1]
@@ -68,7 +69,7 @@ class GenerateStructs
68
69
  def generate(target_filename = 'wmq_structs.c')
69
70
  erb = nil
70
71
  File.open(@templates_path+'/wmq_structs.erb') { |file| erb = ERB.new(file.read) }
71
- File.open(target_filename, 'w') {|file| file.write(generate_structs(erb)) }
72
+ File.open(target_filename, 'w') { |file| file.write(generate_structs(erb)) }
72
73
  puts "Generated #{target_filename}"
73
74
  end
74
75
  end
@@ -1,71 +1,71 @@
1
1
  <%
2
- symbols = {
3
- 'descriptor='=>nil,
4
- 'headers='=>nil,
5
- 'data='=>nil,
6
- 'header_type'=>nil,
7
- 'to_s'=>nil,
8
- 'xml'=>nil,
9
- 'name_value'=>nil,
10
- }
11
- wmq_structs = [
12
- # Message Descriptor
13
- {:file=>'cmqc.h', :struct=>'MQMD'},
14
-
15
- # Message Descriptor 1
16
- {:file=>'cmqc.h', :struct=>'MQMD1', :other_keys=>[:remote_q_name, :remote_q_mgr_name]},
17
-
18
- # Rules and formatting header2
19
- {:file=>'cmqc.h', :struct=>'MQRFH2', :header=>'rf_header_2', :struct_id=>'MQRFH_STRUC_ID',
20
- :other_keys=>[:xml],
21
- :custom=>true }, # Implement custom Message_build_rf_header_2 and Message_deblock_rf_header_2
22
-
23
- # Rules and formatting header
24
- {:file=>'cmqc.h', :struct=>'MQRFH', :header=>'rf_header', :other_keys=>[:name_value],
25
- :custom=>true }, # Implement custom Message_build_rf_header and Message_deblock_rf_header
26
-
27
- # Dead Letter Header
28
- {:file=>'cmqc.h', :struct=>'MQDLH', :header=>'dead_letter_header',
29
- :defaults=>'MQDLH_DEF.CodedCharSetId = MQCCSI_INHERIT;'},
30
-
31
- # CICS bridge header
32
- {:file=>'cmqc.h', :struct=>'MQCIH', :header=>'cics'},
33
-
34
- # Distribution header
35
- {:file=>'cmqc.h', :struct=>'MQDH', :header=>'dist_header'},
36
-
37
- # IMS information header
38
- {:file=>'cmqc.h', :struct=>'MQIIH', :header=>'ims'},
39
-
40
- # Reference message header (send large files over channels)
41
- {:file=>'cmqc.h', :struct=>'MQRMH', :header=>'ref_msg_header'},
42
-
43
- # Trigger Message
44
- {:file=>'cmqc.h', :struct=>'MQTM', :header=>'trigger', :format=>false},
45
-
46
- # Trigger Message 2 (character format)
47
- {:file=>'cmqc.h', :struct=>'MQTMC2'},
48
-
49
- # Work Information header
50
- {:file=>'cmqc.h', :struct=>'MQWIH', :header=>'work_info_header'},
51
-
52
- # Transmission-queue header - Todo: Need to deal with MQMDE
53
- {:file=>'cmqc.h', :struct=>'MQXQH', :header=>'xmit_q_header', :format=>'MsgDesc.Format'},
54
- ]
55
-
56
- wmq_structs.each do |struct|
57
- # Parse WebSphere MQ 'C' Header file and extract elements
58
- elements = extract_struct(@path+'/'+struct[:file], struct[:struct])
59
- struct[:elements] = elements
60
-
61
- # Add symbol for each struct name
62
- symbols[struct[:header]]=nil if struct[:header]
63
-
64
- # Add symbols for each element in C Struct
65
- elements.each do |item|
66
- symbols[rubyize_name(item[1])] = nil unless @@field_ignore_list.include?(item[1])
67
- end
68
- end
2
+ symbols = {
3
+ 'descriptor=' => nil,
4
+ 'headers=' => nil,
5
+ 'data=' => nil,
6
+ 'header_type' => nil,
7
+ 'to_s' => nil,
8
+ 'xml' => nil,
9
+ 'name_value' => nil,
10
+ }
11
+ wmq_structs = [
12
+ # Message Descriptor
13
+ { file: 'cmqc.h', struct: 'MQMD' },
14
+
15
+ # Message Descriptor 1
16
+ { file: 'cmqc.h', struct: 'MQMD1', other_keys: [:remote_q_name, :remote_q_mgr_name] },
17
+
18
+ # Rules and formatting header2
19
+ { file: 'cmqc.h', struct: 'MQRFH2', header: 'rf_header_2', struct_id: 'MQRFH_STRUC_ID',
20
+ other_keys: [:xml],
21
+ custom: true }, # Implement custom Message_build_rf_header_2 and Message_deblock_rf_header_2
22
+
23
+ # Rules and formatting header
24
+ { file: 'cmqc.h', struct: 'MQRFH', header: 'rf_header', other_keys: [:name_value],
25
+ custom: true }, # Implement custom Message_build_rf_header and Message_deblock_rf_header
26
+
27
+ # Dead Letter Header
28
+ { file: 'cmqc.h', struct: 'MQDLH', header: 'dead_letter_header',
29
+ defaults: 'MQDLH_DEF.CodedCharSetId = MQCCSI_INHERIT;' },
30
+
31
+ # CICS bridge header
32
+ { file: 'cmqc.h', struct: 'MQCIH', header: 'cics' },
33
+
34
+ # Distribution header
35
+ { file: 'cmqc.h', struct: 'MQDH', header: 'dist_header' },
36
+
37
+ # IMS information header
38
+ { file: 'cmqc.h', struct: 'MQIIH', header: 'ims' },
39
+
40
+ # Reference message header (send large files over channels)
41
+ { file: 'cmqc.h', struct: 'MQRMH', header: 'ref_msg_header' },
42
+
43
+ # Trigger Message
44
+ { file: 'cmqc.h', struct: 'MQTM', header: 'trigger', format: false },
45
+
46
+ # Trigger Message 2 (character format)
47
+ { file: 'cmqc.h', struct: 'MQTMC2' },
48
+
49
+ # Work Information header
50
+ { file: 'cmqc.h', struct: 'MQWIH', header: 'work_info_header' },
51
+
52
+ # Transmission-queue header - Todo: Need to deal with MQMDE
53
+ { file: 'cmqc.h', struct: 'MQXQH', header: 'xmit_q_header', format: 'MsgDesc.Format' },
54
+ ]
55
+
56
+ wmq_structs.each do |struct|
57
+ # Parse WebSphere MQ 'C' Header file and extract elements
58
+ elements = extract_struct(@path+'/'+struct[:file], struct[:struct])
59
+ struct[:elements] = elements
60
+
61
+ # Add symbol for each struct name
62
+ symbols[struct[:header]]=nil if struct[:header]
63
+
64
+ # Add symbols for each element in C Struct
65
+ elements.each do |item|
66
+ symbols[rubyize_name(item[1])] = nil unless @@field_ignore_list.include?(item[1])
67
+ end
68
+ end
69
69
  %>
70
70
  /* --------------------------------------------------------------------------
71
71
  *
data/ext/wmq.c CHANGED
@@ -1,19 +1,3 @@
1
- /*
2
- * Copyright 2006 J. Reid Morrison
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
  #include "wmq.h"
18
2
 
19
3
  VALUE wmq_queue;
data/ext/wmq.h CHANGED
@@ -1,19 +1,3 @@
1
- /* --------------------------------------------------------------------------
2
- * Copyright 2006 J. Reid Morrison
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
  #include <ruby.h>
18
2
 
19
3
  /* New with Ruby 1.9, define for prior Ruby versions */
@@ -1,19 +1,3 @@
1
- /* --------------------------------------------------------------------------
2
- * Copyright 2006 J. Reid Morrison
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
  #include "wmq.h"
18
2
  #include "decode_rfh.h"
19
3
 
@@ -200,9 +184,9 @@ void Message_build_mqmd(VALUE self, PMQMD pmqmd)
200
184
  * message = WMQ::Message.new
201
185
  *
202
186
  * Example:
203
- * message = WMQ::Message.new(:data=>'Hello World',
204
- * :descriptor=> {
205
- * :format => WMQ::MQFMT_STRING
187
+ * message = WMQ::Message.new(data: 'Hello World',
188
+ * descriptor: {
189
+ * format: WMQ::MQFMT_STRING
206
190
  * })
207
191
  */
208
192
  VALUE Message_initialize(int argc, VALUE *argv, VALUE self)
@@ -238,7 +222,7 @@ VALUE Message_initialize(int argc, VALUE *argv, VALUE self)
238
222
  val = rb_hash_aref(parms, ID2SYM(ID_descriptor));
239
223
  if (NIL_P(val))
240
224
  {
241
- rb_iv_set(self, "@headers", rb_hash_new());
225
+ rb_iv_set(self, "@descriptor", rb_hash_new());
242
226
  }
243
227
  else
244
228
  {
@@ -612,13 +596,13 @@ static VALUE Message_build_rf_header_2_each(VALUE element, struct Message_build_
612
596
  * E.g.
613
597
  *
614
598
  * {
615
- * :header_type =>:rf_header_2,
616
- * :xml => '<hello>to the world</hello>'
599
+ * header_type: :rf_header_2,
600
+ * xml: '<hello>to the world</hello>'
617
601
  * }
618
602
  * OR
619
603
  * {
620
- * :header_type =>:rf_header_2,
621
- * :xml => ['<hello>to the world</hello>', '<another>xml like string</another>'],
604
+ * header_type: :rf_header_2,
605
+ * xml: ['<hello>to the world</hello>', '<another>xml like string</another>'],
622
606
  * }
623
607
  *
624
608
  */
@@ -1,19 +1,3 @@
1
- /*
2
- * Copyright 2006 J. Reid Morrison
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
  #include "wmq.h"
18
2
 
19
3
  #if defined _WIN32 && !defined __CYGWIN__
@@ -41,7 +25,11 @@
41
25
  }
42
26
 
43
27
  #define MQ_LIBRARY_SERVER "mqm"
44
- #define MQ_LIBRARY_CLIENT "mqic32"
28
+ #ifdef _WIN64
29
+ #define MQ_LIBRARY_CLIENT "mqic"
30
+ #else
31
+ #define MQ_LIBRARY_CLIENT "mqic32"
32
+ #endif
45
33
  #elif defined(SOLARIS) || defined(__SVR4) || defined(__linux__) || defined(LINUX)
46
34
  /*
47
35
  * SOLARIS, LINUX
@@ -1,19 +1,3 @@
1
- /* --------------------------------------------------------------------------
2
- * Copyright 2006 J. Reid Morrison
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
  #include "wmq.h"
18
2
  /* --------------------------------------------------
19
3
  * Initialize Ruby ID's for Queue Class
@@ -179,7 +163,7 @@ static MQLONG Queue_extract_open_options(VALUE hash, VALUE name)
179
163
  else if (!mq_open_options)
180
164
  {
181
165
  rb_raise(rb_eArgError,
182
- "Either :mode or :options is required. Both are missing from hash passed to initialize() for Queue: %s",
166
+ "Either :mode or :open_options is required. Both are missing from the parameters passed to initialize() for Queue: %s",
183
167
  RSTRING_PTR(name));
184
168
  }
185
169
 
@@ -228,16 +212,6 @@ void Queue_extract_put_message_options(VALUE hash, PMQPMO ppmo)
228
212
  return;
229
213
  }
230
214
 
231
- /* Future Use:
232
- * *:q_name => ['q_name1', 'q_name2'] # Not implemented: Future Use!!
233
- * *:q_name => [ {queue_manager=>'QMGR_name',
234
- * queue =>'queue name1'}, # Future Use!!
235
- * { ... }
236
- * ]
237
- * *:resolved => { queue => 'Resolved queue name',
238
- * queue_manager => 'Resolved queue manager name' }
239
- */
240
-
241
215
  /*
242
216
  * call-seq:
243
217
  * new(...)
@@ -374,17 +348,21 @@ VALUE Queue_initialize(VALUE self, VALUE hash)
374
348
  *
375
349
  * Example:
376
350
  * require 'wmq/wmq_client'
377
- * queue_manager = WMQ::QueueManager.new(:q_mgr_name =>'REID',
378
- * :connection_name=>'localhost(1414)')
351
+ * queue_manager = WMQ::QueueManager.new(
352
+ * q_mgr_name: 'REID',
353
+ * connection_name: 'localhost(1414)'
354
+ * )
379
355
  * begin
380
356
  * queue_manager.connect
381
357
  *
382
358
  * # Create Queue and clear any messages from the queue
383
- * in_queue = WMQ::Queue.new(:queue_manager =>queue_manager,
384
- * :mode =>:input,
385
- * :dynamic_q_name=>'UNIT.TEST',
386
- * :q_name =>'SYSTEM.DEFAULT.MODEL.QUEUE',
387
- * :fail_if_exists=>false)
359
+ * in_queue = WMQ::Queue.new(
360
+ * queue_manager: 'QMGR',
361
+ * mode: :input,
362
+ * dynamic_q_name: 'UNIT.TEST',
363
+ * q_name: 'SYSTEM.DEFAULT.MODEL.QUEUE',
364
+ * fail_if_exists: false
365
+ * )
388
366
  * begin
389
367
  * in_queue.open
390
368
  * in_queue.each { |message| p message.data }
@@ -392,7 +370,7 @@ VALUE Queue_initialize(VALUE self, VALUE hash)
392
370
  * # Note: Very important: Must close the queue explicitly
393
371
  * in_queue.close
394
372
  * end
395
- * rescue => exc
373
+ * rescue Exception => exc
396
374
  * queue_manager.backout
397
375
  * raise exc
398
376
  * ensure
@@ -576,34 +554,34 @@ VALUE Queue_close(VALUE self)
576
554
  * Parameters:
577
555
  * * a Hash consisting of one or more of the named parameters
578
556
  * * Summary of parameters and their WebSphere MQ equivalents:
579
- * queue.get( # WebSphere MQ Equivalents:
580
- * :message => my_message, # n/a : Instance of Message
581
- * :sync => false, # MQGMO_SYNCPOINT
582
- * :wait => 0, # MQGMO_WAIT, duration in ms
583
- * :match => WMQ::MQMO_NONE, # MQMO_*
584
- * :convert => false, # MQGMO_CONVERT
585
- * :fail_if_quiescing => true # MQOO_FAIL_IF_QUIESCING
586
- * :options => WMQ::MQGMO_FAIL_IF_QUIESCING # MQGMO_*
557
+ * queue.get( # WebSphere MQ Equivalents:
558
+ * message: my_message, # n/a : Instance of Message
559
+ * sync: false, # MQGMO_SYNCPOINT
560
+ * wait: 0, # MQGMO_WAIT, duration in ms
561
+ * match: WMQ::MQMO_NONE, # MQMO_*
562
+ * convert: false, # MQGMO_CONVERT
563
+ * fail_if_quiescing: true # MQOO_FAIL_IF_QUIESCING
564
+ * options: WMQ::MQGMO_FAIL_IF_QUIESCING # MQGMO_*
587
565
  * )
588
566
  *
589
567
  * Mandatory Parameters
590
- * * :message => Message
568
+ * * :message [Message]
591
569
  * * An instance of the WMQ::Message
592
570
  *
593
571
  * Optional Parameters
594
- * * :sync => true or false
572
+ * * :sync [true|false]
595
573
  * * Determines whether the get is performed under synchpoint.
596
574
  * I.e. Under the current unit of work
597
575
  * Default: false
598
576
  *
599
- * * :wait => FixNum
577
+ * * :wait [Integer]
600
578
  * * The time in milli-seconds to wait for a message if one is not immediately available
601
579
  * on the queue
602
580
  * * Note: Under the covers the put option MQGMO_WAIT is automatically set when :wait
603
581
  * is supplied
604
582
  * Default: Wait forever
605
583
  *
606
- * * :match => FixNum
584
+ * * :match [Integer]
607
585
  * * One or more of the following values:
608
586
  * WMQ::MQMO_MATCH_MSG_ID
609
587
  * WMQ::MQMO_MATCH_CORREL_ID
@@ -613,24 +591,24 @@ VALUE Queue_close(VALUE self)
613
591
  * WMQ::MQMO_MATCH_MSG_TOKEN
614
592
  * WMQ::MQMO_NONE
615
593
  * * Multiple values can be or'd together. E.g.
616
- * :match=>WMQ::MQMO_MATCH_MSG_ID | WMQ::MQMO_MATCH_CORREL_ID
594
+ * match: WMQ::MQMO_MATCH_MSG_ID | WMQ::MQMO_MATCH_CORREL_ID
617
595
  * * Please see the WebSphere MQ documentation for more details on the above options
618
596
  * Default: WMQ::MQMO_MATCH_MSG_ID | WMQ::MQMO_MATCH_CORREL_ID
619
597
  *
620
- * * :convert => true or false
598
+ * * :convert [true|false]
621
599
  * * When true, convert results in messages being converted to the local code page.
622
600
  * E.g. When an EBCDIC text message from a mainframe is received, it will be converted
623
601
  * to ASCII before passing the message data to the application.
624
602
  * Default: false
625
603
  *
626
- * * :fail_if_quiescing => true or false
604
+ * * :fail_if_quiescing [true|false]
627
605
  * * Determines whether the WMQ::Queue#get call will fail if the queue manager is
628
606
  * in the process of being quiesced.
629
607
  * * Note: This interface differs from other WebSphere MQ interfaces,
630
608
  * they do not default to true.
631
609
  * Default: true
632
610
  *
633
- * * :options => Fixnum (Advanced MQ Use only)
611
+ * * :options [Integer] (Advanced MQ Use only)
634
612
  * * Numeric field containing any of the MQ Get message options or'd together
635
613
  * * E.g. :options => WMQ::MQGMO_SYNCPOINT_IF_PERSISTENT | WMQ::MQGMO_MARK_SKIP_BACKOUT
636
614
  * * Note: If :options is supplied, it is applied first, then the above parameters are
@@ -669,10 +647,10 @@ VALUE Queue_close(VALUE self)
669
647
  * Example:
670
648
  * require 'wmq/wmq'
671
649
  *
672
- * WMQ::QueueManager.connect(:q_mgr_name=>'REID') do |qmgr|
673
- * qmgr.open_queue(:q_name=>'TEST.QUEUE', :mode=>:input) do |queue|
650
+ * WMQ::QueueManager.connect(q_mgr_name: 'REID') do |qmgr|
651
+ * qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :input) do |queue|
674
652
  * message = WMQ::Message.new
675
- * if queue.get(:message => message)
653
+ * if queue.get(message: message)
676
654
  * puts "Data Received: #{message.data}"
677
655
  * else
678
656
  * puts 'No message available'
@@ -825,16 +803,16 @@ VALUE Queue_get(VALUE self, VALUE hash)
825
803
  * Parameters:
826
804
  * * A Hash consisting of one or more of the named parameters
827
805
  * * Summary of parameters and their WebSphere MQ equivalents
828
- * queue.put( # WebSphere MQ Equivalents:
829
- * :message => my_message, # n/a : Instance of Message
830
- * :data => "Hello World", # n/a : Data to send
831
- * :sync => false, # MQGMO_SYNCPOINT
832
- * :new_id => true, # MQPMO_NEW_MSG_ID & MQPMO_NEW_CORREL_ID
833
- * :new_msg_id => true, # MQPMO_NEW_MSG_ID
834
- * :new_correl_id => true, # MQPMO_NEW_CORREL_ID
835
- * :fail_if_quiescing => true, # MQOO_FAIL_IF_QUIESCING
836
- * :options => WMQ::MQPMO_FAIL_IF_QUIESCING # MQPMO_*
837
- * )
806
+ * queue.put( # WebSphere MQ Equivalents:
807
+ * message: my_message, # n/a : Instance of Message
808
+ * data: 'Hello World', # n/a : Data to send
809
+ * sync: false, # MQGMO_SYNCPOINT
810
+ * new_id: true, # MQPMO_NEW_MSG_ID & MQPMO_NEW_CORREL_ID
811
+ * new_msg_id: true, # MQPMO_NEW_MSG_ID
812
+ * new_correl_id: true, # MQPMO_NEW_CORREL_ID
813
+ * fail_if_quiescing: true, # MQOO_FAIL_IF_QUIESCING
814
+ * options: WMQ::MQPMO_FAIL_IF_QUIESCING # MQPMO_*
815
+ * )
838
816
  *
839
817
  * Mandatory Parameters:
840
818
  *
@@ -925,22 +903,22 @@ VALUE Queue_get(VALUE self, VALUE hash)
925
903
  * Example:
926
904
  * require 'wmq/wmq_client'
927
905
  *
928
- * WMQ::QueueManager.connect(:q_mgr_name=>'REID', :connection_name=>'localhost(1414)') do |qmgr|
929
- * qmgr.open_queue(:q_name=>'TEST.QUEUE', :mode=>:output) do |queue|
906
+ * WMQ::QueueManager.connect(q_mgr_name: 'REID', connection_name: 'localhost(1414)') do |qmgr|
907
+ * qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :output) do |queue|
930
908
  *
931
909
  * # First message
932
- * queue.put(:data => 'Hello World')
910
+ * queue.put(data: 'Hello World')
933
911
  *
934
912
  * # Set Format of message to string
935
913
  * message = WMQ::Message.new
936
914
  * message.descriptor[:format] = WMQ::MQFMT_STRING
937
- * queue.put(:message=>message, :data => 'Hello Again')
915
+ * queue.put(message: message, data: 'Hello Again')
938
916
  *
939
917
  * # Or, pass the data in the message
940
918
  * message = WMQ::Message.new
941
919
  * message.descriptor[:format] = WMQ::MQFMT_STRING
942
920
  * message.data = 'Hello Again'
943
- * queue.put(:message=>message)
921
+ * queue.put(message: message)
944
922
  * end
945
923
  * end
946
924
  */
@@ -1048,20 +1026,20 @@ static VALUE Queue_singleton_open_ensure(VALUE queue)
1048
1026
  * Parameters:
1049
1027
  * * Since the number of parameters can vary dramatically, all parameters are passed by name in a hash
1050
1028
  * * Summary of parameters and their WebSphere MQ equivalents:
1051
- * queue = Queue.new( # WebSphere MQ Equivalents:
1052
- * :queue_manager => queue_manager, # n/a : Instance of QueueManager
1053
- * :q_name => 'Queue Name', # MQOD.ObjectName
1054
- * :q_name => { queue_manager=>'QMGR_name', # MQOD.ObjectQMgrName
1055
- * q_name =>'q_name'}
1056
- * :mode => :input or :input_shared or :input_exclusive or :output,
1057
- * :fail_if_quiescing => true # MQOO_FAIL_IF_QUIESCING
1058
- * :fail_if_exists => true, # For dynamic queues, fail if it already exists
1059
- * :open_options => WMQ::MQOO_BIND_ON_OPEN | ... # MQOO_*
1060
- * :close_options => WMQ::MQCO_DELETE_PURGE # MQCO_*
1061
- * :dynamic_q_name => 'Name of Dynamic Queue' # MQOD.DynamicQName
1062
- * :alternate_user_id => 'userid', # MQOD.AlternateUserId
1063
- * :alternate_security_id => '' # MQOD.AlternateSecurityId
1064
- * )
1029
+ * queue = Queue.new( # WebSphere MQ Equivalents:
1030
+ * queue_manager: queue_manager, # n/a : Instance of QueueManager
1031
+ * q_name: 'Queue Name', # MQOD.ObjectName
1032
+ * q_name: { queue_manager:'QMGR_name', # MQOD.ObjectQMgrName
1033
+ * q_name: 'q_name'}
1034
+ * mode: :input or :input_shared or :input_exclusive or :output,
1035
+ * fail_if_quiescing: true # MQOO_FAIL_IF_QUIESCING
1036
+ * fail_if_exists: true, # For dynamic queues, fail if it already exists
1037
+ * open_options: WMQ::MQOO_BIND_ON_OPEN | ... # MQOO_*
1038
+ * close_options: WMQ::MQCO_DELETE_PURGE # MQCO_*
1039
+ * dynamic_q_name: 'Name of Dynamic Queue' # MQOD.DynamicQName
1040
+ * alternate_user_id: 'userid', # MQOD.AlternateUserId
1041
+ * alternate_security_id: '' # MQOD.AlternateSecurityId
1042
+ * )
1065
1043
  *
1066
1044
  * Mandatory Parameters
1067
1045
  * * :queue_manager
@@ -1120,6 +1098,9 @@ static VALUE Queue_singleton_open_ensure(VALUE queue)
1120
1098
  * * Note: For now it is also necessary to specify these options when calling
1121
1099
  * WMQ::Queue#each. A change will be made to each to address this.
1122
1100
  * Equivalent to: MQOO_BROWSE
1101
+ * * Default: None.
1102
+ * If no :mode is supplied, then :open_options must be supplied.
1103
+ * In this way any custom combination of open options can be supplied.
1123
1104
  *
1124
1105
  * Optional Parameters
1125
1106
  * * :fail_if_quiescing => true or false
@@ -1198,11 +1179,13 @@ static VALUE Queue_singleton_open_ensure(VALUE queue)
1198
1179
  * # Put 10 Hello World messages onto a queue
1199
1180
  * require 'wmq/wmq_client'
1200
1181
  *
1201
- * WMQ::QueueManager.connect(:q_mgr_name=>'REID', :connection_name=>'localhost(1414)') do |qmgr|
1202
- * WMQ::Queue.open(:queue_manager=>qmgr,
1203
- * :q_name =>'TEST.QUEUE',
1204
- * :mode =>:output) do |queue|
1205
- * 10.times { |counter| queue.put(:data => "Hello World #{counter}") }
1182
+ * WMQ::QueueManager.connect(q_mgr_name: 'REID', connection_name: 'localhost(1414)') do |qmgr|
1183
+ * WMQ::Queue.open(
1184
+ * queue_manager: qmgr,
1185
+ * q_name: 'TEST.QUEUE',
1186
+ * mode: :output
1187
+ * ) do |queue|
1188
+ * 10.times { |counter| queue.put(data: "Hello World #{counter}") }
1206
1189
  * end
1207
1190
  * end
1208
1191
  */
@@ -1247,8 +1230,8 @@ VALUE Queue_singleton_open(int argc, VALUE *argv, VALUE self)
1247
1230
  * Example:
1248
1231
  * require 'wmq/wmq'
1249
1232
  *
1250
- * WMQ::QueueManager.connect(:q_mgr_name=>'REID') do |qmgr|
1251
- * qmgr.open_queue(:q_name=>'TEST.QUEUE', :mode=>:input) do |queue|
1233
+ * WMQ::QueueManager.connect(q_mgr_name:'REID') do |qmgr|
1234
+ * qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :input) do |queue|
1252
1235
  * queue.each do |message|
1253
1236
  * puts "Data Received: #{message.data}"
1254
1237
  * end