rubywmq 2.0.2 → 2.1.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.
- checksums.yaml +4 -4
 - data/Gemfile +10 -0
 - data/Gemfile.lock +37 -0
 - data/LICENSE.txt +1 -1
 - data/README.md +29 -47
 - data/Rakefile +12 -76
 - data/examples/each_a.rb +2 -3
 - data/examples/each_b.rb +4 -5
 - data/examples/each_header.rb +5 -6
 - data/examples/files_to_q.rb +7 -8
 - data/examples/get_a.rb +3 -5
 - data/examples/get_client.rb +9 -10
 - data/examples/put1_a.rb +2 -3
 - data/examples/put1_b.rb +4 -7
 - data/examples/put1_c.rb +6 -6
 - data/examples/put_a.rb +0 -2
 - data/examples/put_b.rb +5 -7
 - data/examples/put_dlh.rb +11 -12
 - data/examples/put_dynamic_q.rb +7 -7
 - data/examples/put_group_a.rb +3 -4
 - data/examples/put_group_b.rb +7 -7
 - data/examples/put_rfh.rb +13 -11
 - data/examples/put_rfh2_a.rb +9 -10
 - data/examples/put_rfh2_b.rb +9 -9
 - data/examples/put_xmit_q.rb +63 -8
 - data/examples/q_to_files.rb +6 -7
 - data/examples/request.rb +20 -18
 - data/examples/server.rb +19 -16
 - data/ext/extconf.rb +2 -1
 - data/ext/extconf_client.rb +3 -3
 - data/ext/generate/generate_const.rb +30 -23
 - data/ext/generate/generate_reason.rb +70 -72
 - data/ext/generate/generate_structs.rb +20 -19
 - data/ext/generate/wmq_structs.erb +67 -67
 - data/ext/wmq.c +0 -16
 - data/ext/wmq.h +0 -16
 - data/ext/wmq_message.c +8 -24
 - data/ext/wmq_mq_load.c +5 -17
 - data/ext/wmq_queue.c +73 -90
 - data/ext/wmq_queue_manager.c +115 -108
 - data/lib/wmq/message.rb +36 -34
 - data/lib/wmq/queue_manager.rb +22 -19
 - data/lib/wmq/version.rb +1 -1
 - data/rubywmq.gemspec +38 -0
 - data/test/queue_manager_test.rb +334 -0
 - data/test/test_helper.rb +14 -0
 - metadata +16 -26
 - data/tests/test.rb +0 -318
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b802e25f55b180913d83383fa1677fde31a954c3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 366ed87e4148c86ba88e4fea59145335c089aa98
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: cef09bb323a8a79f7aa6cc2e79dd8240419c94589d02b59bfe7b1859d398bef6c1b1d3afe0a19e0088588d1a2a2ac4c18a8260d32743cfad5484dbbbec11b023
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 2d5747bafe54f8700e1ba61ec5a6a64cfa5cb412f78e387fa89551ed162bdd494cb826c556804b0a735c67045d4e1014207ad491fb75eb989659089f79ac73e0
         
     | 
    
        data/Gemfile
    ADDED
    
    
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            PATH
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: /
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                rubywmq (2.1.0)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 7 
     | 
    
         
            +
              remote: https://rubygems.org/
         
     | 
| 
      
 8 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 9 
     | 
    
         
            +
                ansi (1.5.0)
         
     | 
| 
      
 10 
     | 
    
         
            +
                awesome_print (1.6.1)
         
     | 
| 
      
 11 
     | 
    
         
            +
                builder (3.2.2)
         
     | 
| 
      
 12 
     | 
    
         
            +
                minitest (5.7.0)
         
     | 
| 
      
 13 
     | 
    
         
            +
                minitest-reporters (1.0.19)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  ansi
         
     | 
| 
      
 15 
     | 
    
         
            +
                  builder
         
     | 
| 
      
 16 
     | 
    
         
            +
                  minitest (>= 5.0)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  ruby-progressbar
         
     | 
| 
      
 18 
     | 
    
         
            +
                minitest-stub_any_instance (1.0.1)
         
     | 
| 
      
 19 
     | 
    
         
            +
                rake (10.4.2)
         
     | 
| 
      
 20 
     | 
    
         
            +
                ruby-progressbar (1.7.5)
         
     | 
| 
      
 21 
     | 
    
         
            +
                shoulda-context (1.2.1)
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 24 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 25 
     | 
    
         
            +
              x64-mingw32
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 28 
     | 
    
         
            +
              awesome_print
         
     | 
| 
      
 29 
     | 
    
         
            +
              minitest
         
     | 
| 
      
 30 
     | 
    
         
            +
              minitest-reporters
         
     | 
| 
      
 31 
     | 
    
         
            +
              minitest-stub_any_instance
         
     | 
| 
      
 32 
     | 
    
         
            +
              rake
         
     | 
| 
      
 33 
     | 
    
         
            +
              rubywmq!
         
     | 
| 
      
 34 
     | 
    
         
            +
              shoulda-context
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            BUNDLED WITH
         
     | 
| 
      
 37 
     | 
    
         
            +
               1.10.6
         
     | 
    
        data/LICENSE.txt
    CHANGED
    
    | 
         @@ -186,7 +186,7 @@ 
     | 
|
| 
       186 
186 
     | 
    
         
             
                  same "printed page" as the copyright notice for easier
         
     | 
| 
       187 
187 
     | 
    
         
             
                  identification within third-party archives.
         
     | 
| 
       188 
188 
     | 
    
         | 
| 
       189 
     | 
    
         
            -
               Copyright 2006 -  
     | 
| 
      
 189 
     | 
    
         
            +
               Copyright 2006 - 2015  J. Reid Morrison
         
     | 
| 
       190 
190 
     | 
    
         | 
| 
       191 
191 
     | 
    
         
             
               Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       192 
192 
     | 
    
         
             
               you may not use this file except in compliance with the License.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            # rubywmq
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            RubyWMQ is a high performance native Ruby interface into WebSphere MQ.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
         @@ -10,8 +10,8 @@ The Ruby WMQ interface currently supports the following features: 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            High performance
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            * Able to read over  
     | 
| 
       14 
     | 
    
         
            -
            *  
     | 
| 
      
 13 
     | 
    
         
            +
            * Able to read over 2,000 messages per second from a Queue
         
     | 
| 
      
 14 
     | 
    
         
            +
                * Non-persistent messages, < 4K each, MQ V6
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            Full support for the entire MQ Administration interface (MQAI)
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
         @@ -44,16 +44,14 @@ Single Ruby WMQ auto-detection library that concurrently supports: 
     | 
|
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
            Includes latest client connection options such as SSL
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
            Tested with WebSphere MQ V5.3, V6, V7,  
     | 
| 
      
 47 
     | 
    
         
            +
            Tested with WebSphere MQ V5.3, V6, V7, V7.5, and V8
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
            Is written in C to ensure easier portability and performance
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
51 
     | 
    
         
             
            ### Compatibility
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
            Ruby
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
            * RubyWMQ only works on Ruby MRI on with Ruby 1.8.7, Ruby 1.9.3, or greater
         
     | 
| 
       56 
     | 
    
         
            -
            * For JRuby, see http://github.com/reidmorrison/jruby-jms
         
     | 
| 
      
 53 
     | 
    
         
            +
            * Ruby 1.9 or greater
         
     | 
| 
      
 54 
     | 
    
         
            +
            * Not designed for JRuby, use (jruby-jms)[https://github.com/reidmorrison/jruby-jms]
         
     | 
| 
       57 
55 
     | 
    
         | 
| 
       58 
56 
     | 
    
         
             
            WebSphere MQ
         
     | 
| 
       59 
57 
     | 
    
         | 
| 
         @@ -64,21 +62,18 @@ WebSphere MQ 
     | 
|
| 
       64 
62 
     | 
    
         
             
            ## Example
         
     | 
| 
       65 
63 
     | 
    
         | 
| 
       66 
64 
     | 
    
         
             
            ```ruby
         
     | 
| 
       67 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       68 
65 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       69 
66 
     | 
    
         | 
| 
       70 
67 
     | 
    
         
             
            # Connect to a local queue manager called 'TEST' and put a single message
         
     | 
| 
       71 
68 
     | 
    
         
             
            # on the queue 'TEST.QUEUE'
         
     | 
| 
       72 
     | 
    
         
            -
            WMQ::QueueManager.connect(: 
     | 
| 
       73 
     | 
    
         
            -
                qmgr.put(: 
     | 
| 
      
 69 
     | 
    
         
            +
            WMQ::QueueManager.connect(q_mgr_name: 'TEST') do |qmgr|
         
     | 
| 
      
 70 
     | 
    
         
            +
                qmgr.put(q_name: 'TEST.QUEUE', data: 'Hello World')
         
     | 
| 
       74 
71 
     | 
    
         
             
            end
         
     | 
| 
       75 
72 
     | 
    
         
             
            ```
         
     | 
| 
       76 
73 
     | 
    
         | 
| 
       77 
74 
     | 
    
         
             
            ## More Examples
         
     | 
| 
       78 
75 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            are installed as part of the Gem under the 'examples' sub-directory. The examples can
         
     | 
| 
       81 
     | 
    
         
            -
            also be be viewed at https://github.com/reidmorrison/rubywmq/tree/master/examples
         
     | 
| 
      
 76 
     | 
    
         
            +
            The examples below are all available at https://github.com/reidmorrison/rubywmq/tree/master/examples
         
     | 
| 
       82 
77 
     | 
    
         | 
| 
       83 
78 
     | 
    
         
             
            Put one message to a Queue (Without opening the queue)
         
     | 
| 
       84 
79 
     | 
    
         | 
| 
         @@ -149,6 +144,8 @@ Also install RubyGems and ruby-dev or ruby-sdk packages if not already installed 
     | 
|
| 
       149 
144 
     | 
    
         | 
| 
       150 
145 
     | 
    
         
             
            Install the [WebSphere MQ Client and/or Server](http://www.ibm.com/developerworks/downloads/ws/wmq/)
         
     | 
| 
       151 
146 
     | 
    
         | 
| 
      
 147 
     | 
    
         
            +
            * Develop on [WebSphere MQ Advanced](https://www.ibm.com/developerworks/community/blogs/messaging/entry/develop_on_websphere_mq_advanced_at_no_charge?lang=en#) at no charge!
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
       152 
149 
     | 
    
         
             
            * Note: Install the Development Toolkit (SDK) and Client
         
     | 
| 
       153 
150 
     | 
    
         | 
| 
       154 
151 
     | 
    
         
             
            Install RubyWMQ Gem
         
     | 
| 
         @@ -186,7 +183,7 @@ Download and install the Ruby installer from http://rubyinstaller.org/downloads/ 
     | 
|
| 
       186 
183 
     | 
    
         | 
| 
       187 
184 
     | 
    
         
             
            Download and install the Development Kit from the same site
         
     | 
| 
       188 
185 
     | 
    
         | 
| 
       189 
     | 
    
         
            -
            * Extract files into c:\ 
     | 
| 
      
 186 
     | 
    
         
            +
            * Extract files into c:\Devkit
         
     | 
| 
       190 
187 
     | 
    
         | 
| 
       191 
188 
     | 
    
         
             
            Open a command prompt and run the commands below:
         
     | 
| 
       192 
189 
     | 
    
         | 
| 
         @@ -199,22 +196,28 @@ If you experience any difficulties, see https://github.com/oneclick/rubyinsta 
     | 
|
| 
       199 
196 
     | 
    
         | 
| 
       200 
197 
     | 
    
         
             
            Install the [WebSphere MQ Client and/or Server](http://www.ibm.com/developerworks/downloads/ws/wmq/)
         
     | 
| 
       201 
198 
     | 
    
         | 
| 
      
 199 
     | 
    
         
            +
            * Develop on [WebSphere MQ Advanced](https://www.ibm.com/developerworks/community/blogs/messaging/entry/develop_on_websphere_mq_advanced_at_no_charge?lang=en#) at no charge!
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
       202 
201 
     | 
    
         
             
            * Note: Install the Development Toolkit (SDK) and Client
         
     | 
| 
       203 
202 
     | 
    
         | 
| 
       204 
203 
     | 
    
         
             
            #### Install the RubyWMQ Gem
         
     | 
| 
       205 
204 
     | 
    
         | 
| 
       206 
205 
     | 
    
         
             
                call "c:\DevKit\devkitvars.bat"
         
     | 
| 
       207 
     | 
    
         
            -
                gem install rubywmq 
     | 
| 
      
 206 
     | 
    
         
            +
                gem install rubywmq
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
            If WebSphere MQ is installed in the non-default location:
         
     | 
| 
      
 209 
     | 
    
         
            +
             
     | 
| 
      
 210 
     | 
    
         
            +
                gem install rubywmq --platform=ruby -- '--with-mqm-include="C:\Program Files\IBM\WebSphere MQ\Tools\c\include"'
         
     | 
| 
       208 
211 
     | 
    
         | 
| 
       209 
212 
     | 
    
         
             
            #### Installation Errors
         
     | 
| 
       210 
213 
     | 
    
         | 
| 
       211 
214 
     | 
    
         
             
            Use this command to find the directory in which the gems are installed
         
     | 
| 
       212 
215 
     | 
    
         | 
| 
       213 
     | 
    
         
            -
                gem  
     | 
| 
      
 216 
     | 
    
         
            +
                gem which rubywmq
         
     | 
| 
       214 
217 
     | 
    
         | 
| 
       215 
218 
     | 
    
         
             
            The path to the rubywmq gem will be something like
         
     | 
| 
       216 
219 
     | 
    
         | 
| 
       217 
     | 
    
         
            -
                C:\ 
     | 
| 
      
 220 
     | 
    
         
            +
                C:\Ruby22\lib\ruby\gems\2.2.0\gems\rubywmq-2.0.3\ext
         
     | 
| 
       218 
221 
     | 
    
         | 
| 
       219 
222 
     | 
    
         
             
            When WebSphere MQ is not installed in the default location, change to the directory
         
     | 
| 
       220 
223 
     | 
    
         
             
            above and call the build command directly while supplying the location explicitly:
         
     | 
| 
         @@ -235,7 +238,6 @@ Create a local queue called TEST.QUEUE 
     | 
|
| 
       235 
238 
     | 
    
         
             
            Run the following Ruby Code in an irb session:
         
     | 
| 
       236 
239 
     | 
    
         | 
| 
       237 
240 
     | 
    
         
             
            ```ruby
         
     | 
| 
       238 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       239 
241 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       240 
242 
     | 
    
         
             
            WMQ::QueueManager.connect(:q_mgr_name=>'TEST') do |qmgr|
         
     | 
| 
       241 
243 
     | 
    
         
             
              qmgr.put(:q_name=>'TEST.QUEUE', :data => 'Hello World')
         
     | 
| 
         @@ -256,7 +258,7 @@ is installed locally. This prevents issues with having to statically link with 
     | 
|
| 
       256 
258 
     | 
    
         
             
            both the client and server libraries and then having to select the "correct"
         
     | 
| 
       257 
259 
     | 
    
         
             
            one on startup.
         
     | 
| 
       258 
260 
     | 
    
         | 
| 
       259 
     | 
    
         
            -
            Additionally, this approach allows RubyWMQ to be simultaneously  
     | 
| 
      
 261 
     | 
    
         
            +
            Additionally, this approach allows RubyWMQ to be simultaneously connected to a local
         
     | 
| 
       260 
262 
     | 
    
         
             
            Queue Manager via server bindings and to a remote Queue Manager using Client bindings.
         
     | 
| 
       261 
263 
     | 
    
         | 
| 
       262 
264 
     | 
    
         
             
            Instead of hard coding all the MQ C Structures and return codes into RubyWMQ, it
         
     | 
| 
         @@ -359,41 +361,21 @@ dis channel(*) chltype(SVRCONN) 
     | 
|
| 
       359 
361 
     | 
    
         
             
            * Look for the channel name the application is using.
         
     | 
| 
       360 
362 
     | 
    
         
             
            * Note: the channel name is case-sensitive.
         
     | 
| 
       361 
363 
     | 
    
         | 
| 
       362 
     | 
    
         
            -
            ##  
     | 
| 
      
 364 
     | 
    
         
            +
            ## Versioning
         
     | 
| 
       363 
365 
     | 
    
         | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
            Feature and Bug Reports: <http://github.com/reidmorrison/rubywmq/issues>
         
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
            ## Contributing
         
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
            Once you've made your great commits:
         
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
       372 
     | 
    
         
            -
            1. [Fork](http://help.github.com/forking/) rubywmq
         
     | 
| 
       373 
     | 
    
         
            -
            2. Create a topic branch - `git checkout -b my_branch`
         
     | 
| 
       374 
     | 
    
         
            -
            3. Push to your branch - `git push origin my_branch`
         
     | 
| 
       375 
     | 
    
         
            -
            4. Create an [Issue](http://github.com/reidmorrison/rubywmq/issues) with a link to your branch
         
     | 
| 
       376 
     | 
    
         
            -
            5. That's it!
         
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
            ## Meta
         
     | 
| 
       379 
     | 
    
         
            -
             
     | 
| 
       380 
     | 
    
         
            -
            * Code: `git clone git://github.com/reidmorrison/rubywmq.git`
         
     | 
| 
       381 
     | 
    
         
            -
            * Home: <http://github.com/reidmorrison/rubywmq>
         
     | 
| 
       382 
     | 
    
         
            -
            * Bugs: <http://github.com/reidmorrison/rubywmq/issues>
         
     | 
| 
       383 
     | 
    
         
            -
            * Gems: <http://rubygems.org/gems/rubywmq>
         
     | 
| 
       384 
     | 
    
         
            -
             
     | 
| 
       385 
     | 
    
         
            -
            This project uses [Semantic Versioning](http://semver.org/).
         
     | 
| 
      
 366 
     | 
    
         
            +
            This project adheres to [Semantic Versioning](http://semver.org/).
         
     | 
| 
       386 
367 
     | 
    
         | 
| 
       387 
368 
     | 
    
         
             
            ## Author
         
     | 
| 
       388 
369 
     | 
    
         | 
| 
       389 
     | 
    
         
            -
            Reid Morrison 
     | 
| 
      
 370 
     | 
    
         
            +
            [Reid Morrison](https://github.com/reidmorrison) :: @reidmorrison
         
     | 
| 
      
 371 
     | 
    
         
            +
             
     | 
| 
      
 372 
     | 
    
         
            +
            ## Contributors
         
     | 
| 
       390 
373 
     | 
    
         | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
            the wonderful world of Ruby
         
     | 
| 
      
 374 
     | 
    
         
            +
            * Edwin Fine - RFH parsing code
         
     | 
| 
       393 
375 
     | 
    
         | 
| 
       394 
376 
     | 
    
         
             
            ## License
         
     | 
| 
       395 
377 
     | 
    
         | 
| 
       396 
     | 
    
         
            -
            Copyright 2006 -  
     | 
| 
      
 378 
     | 
    
         
            +
            Copyright 2006 - 2015 J. Reid Morrison
         
     | 
| 
       397 
379 
     | 
    
         | 
| 
       398 
380 
     | 
    
         
             
            Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       399 
381 
     | 
    
         
             
            you may not use this file except in compliance with the License.
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,91 +1,27 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            lib = File.expand_path('../lib/', __FILE__)
         
     | 
| 
       2 
     | 
    
         
            -
            $:.unshift lib unless $:.include?(lib)
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'rubygems/package'
         
     | 
| 
       6 
1 
     | 
    
         
             
            require 'rake/clean'
         
     | 
| 
       7 
2 
     | 
    
         
             
            require 'rake/testtask'
         
     | 
| 
       8 
     | 
    
         
            -
            require 'date'
         
     | 
| 
       9 
     | 
    
         
            -
            require 'wmq/version'
         
     | 
| 
       10 
3 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            task :gem  do |t|
         
     | 
| 
       13 
     | 
    
         
            -
              excludes = [
         
     | 
| 
       14 
     | 
    
         
            -
                /lib.wmq.constants\.rb/,
         
     | 
| 
       15 
     | 
    
         
            -
                /lib.wmq.constants_admin\.rb/,
         
     | 
| 
       16 
     | 
    
         
            -
                /ext.wmq_structs\.c/,
         
     | 
| 
       17 
     | 
    
         
            -
                /ext.wmq_reason\.c/,
         
     | 
| 
       18 
     | 
    
         
            -
                /ext.Makefile/,
         
     | 
| 
       19 
     | 
    
         
            -
                /ext.*\.o/,
         
     | 
| 
       20 
     | 
    
         
            -
                /ext.wmq\.so/,
         
     | 
| 
       21 
     | 
    
         
            -
                /\.gem$/,
         
     | 
| 
       22 
     | 
    
         
            -
                /\.log$/,
         
     | 
| 
       23 
     | 
    
         
            -
                /nbproject/
         
     | 
| 
       24 
     | 
    
         
            -
              ]
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative 'lib/wmq/version'
         
     | 
| 
       25 
5 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                spec.version           = WMQ::VERSION
         
     | 
| 
       29 
     | 
    
         
            -
                spec.platform          = Gem::Platform::RUBY
         
     | 
| 
       30 
     | 
    
         
            -
                spec.authors           = ['Reid Morrison', 'Edwin Fine']
         
     | 
| 
       31 
     | 
    
         
            -
                spec.email             = ['reidmo@gmail.com']
         
     | 
| 
       32 
     | 
    
         
            -
                spec.homepage          = 'https://github.com/reidmorrison/rubywmq'
         
     | 
| 
       33 
     | 
    
         
            -
                spec.date              = Date.today.to_s
         
     | 
| 
       34 
     | 
    
         
            -
                spec.summary           = "Native Ruby interface into WebSphere MQ"
         
     | 
| 
       35 
     | 
    
         
            -
                spec.description       = "RubyWMQ is a high performance native Ruby interface into WebSphere MQ."
         
     | 
| 
       36 
     | 
    
         
            -
                spec.files             = FileList["./**/*"].exclude(*excludes).map{|f| f.sub(/^\.\//, '')} + ['.document']
         
     | 
| 
       37 
     | 
    
         
            -
                spec.license           = "Apache License V2.0"
         
     | 
| 
       38 
     | 
    
         
            -
                spec.extensions        << 'ext/extconf.rb'
         
     | 
| 
       39 
     | 
    
         
            -
                spec.rubyforge_project = 'rubywmq'
         
     | 
| 
       40 
     | 
    
         
            -
                spec.test_file         = 'tests/test.rb'
         
     | 
| 
       41 
     | 
    
         
            -
                spec.has_rdoc          = true
         
     | 
| 
       42 
     | 
    
         
            -
                spec.required_ruby_version = '>= 1.8.4'
         
     | 
| 
       43 
     | 
    
         
            -
                spec.add_development_dependency 'shoulda'
         
     | 
| 
       44 
     | 
    
         
            -
                spec.requirements << 'WebSphere MQ v5.3, v6 or v7 Client or Server with Development Kit'
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
              p gemspec.files
         
     | 
| 
       47 
     | 
    
         
            -
              Gem::Package.build gemspec
         
     | 
| 
      
 6 
     | 
    
         
            +
            task :gem do
         
     | 
| 
      
 7 
     | 
    
         
            +
              system 'gem build rubywmq.gemspec'
         
     | 
| 
       48 
8 
     | 
    
         
             
            end
         
     | 
| 
       49 
9 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
               
     | 
| 
       53 
     | 
    
         
            -
               
     | 
| 
       54 
     | 
    
         
            -
               
     | 
| 
       55 
     | 
    
         
            -
              FileUtils.copy('ext/wmq.so', 'lib/wmq/wmq.so')
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
              gemspec = Gem::Specification.new do |spec|
         
     | 
| 
       58 
     | 
    
         
            -
                spec.name              = 'rubywmq'
         
     | 
| 
       59 
     | 
    
         
            -
                spec.version           = WMQ::VERSION
         
     | 
| 
       60 
     | 
    
         
            -
                spec.platform          = Gem::Platform::CURRENT
         
     | 
| 
       61 
     | 
    
         
            -
                spec.authors           = ['Reid Morrison', 'Edwin Fine']
         
     | 
| 
       62 
     | 
    
         
            -
                spec.email             = ['reidmo@gmail.com']
         
     | 
| 
       63 
     | 
    
         
            -
                spec.homepage          = 'https://github.com/reidmorrison/rubywmq'
         
     | 
| 
       64 
     | 
    
         
            -
                spec.date              = Date.today.to_s
         
     | 
| 
       65 
     | 
    
         
            -
                spec.summary           = "Native Ruby interface into WebSphere MQ"
         
     | 
| 
       66 
     | 
    
         
            -
                spec.description       = "RubyWMQ is a high performance native Ruby interface into WebSphere MQ."
         
     | 
| 
       67 
     | 
    
         
            -
                spec.files             = Dir['examples/**/*.rb'] +
         
     | 
| 
       68 
     | 
    
         
            -
                                         Dir['examples/**/*.cfg'] +
         
     | 
| 
       69 
     | 
    
         
            -
                                         Dir['doc/**/*.*'] +
         
     | 
| 
       70 
     | 
    
         
            -
                                         Dir['lib/**/*.rb'] +
         
     | 
| 
       71 
     | 
    
         
            -
                                         ['lib/wmq/wmq.so', 'tests/test.rb', 'README', 'LICENSE']
         
     | 
| 
       72 
     | 
    
         
            -
                spec.license           = "Apache License V2.0"
         
     | 
| 
       73 
     | 
    
         
            -
                spec.rubyforge_project = 'rubywmq'
         
     | 
| 
       74 
     | 
    
         
            -
                spec.test_file         = 'tests/test.rb'
         
     | 
| 
       75 
     | 
    
         
            -
                spec.has_rdoc          = false
         
     | 
| 
       76 
     | 
    
         
            -
                spec.required_ruby_version = '>= 1.8.4'
         
     | 
| 
       77 
     | 
    
         
            -
                spec.add_development_dependency 'shoulda'
         
     | 
| 
       78 
     | 
    
         
            -
                spec.requirements << 'WebSphere MQ v5.3, v6 or v7 Client or Server with Development Kit'
         
     | 
| 
       79 
     | 
    
         
            -
              end
         
     | 
| 
       80 
     | 
    
         
            -
              Gem::Package.build gemspec
         
     | 
| 
      
 10 
     | 
    
         
            +
            task publish: :gem do
         
     | 
| 
      
 11 
     | 
    
         
            +
              system "git tag -a v#{WMQ::VERSION} -m 'Tagging #{WMQ::VERSION}'"
         
     | 
| 
      
 12 
     | 
    
         
            +
              system 'git push --tags'
         
     | 
| 
      
 13 
     | 
    
         
            +
              system "gem push rubywmq-#{WMQ::VERSION}.gem"
         
     | 
| 
      
 14 
     | 
    
         
            +
              system "rm rubywmq-#{WMQ::VERSION}.gem"
         
     | 
| 
       81 
15 
     | 
    
         
             
            end
         
     | 
| 
       82 
16 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
            desc  
     | 
| 
      
 17 
     | 
    
         
            +
            desc 'Run Test Suite'
         
     | 
| 
       84 
18 
     | 
    
         
             
            task :test do
         
     | 
| 
       85 
19 
     | 
    
         
             
              Rake::TestTask.new(:functional) do |t|
         
     | 
| 
       86 
     | 
    
         
            -
                t.test_files = FileList['test 
     | 
| 
      
 20 
     | 
    
         
            +
                t.test_files = FileList['test/**/*_test.rb']
         
     | 
| 
       87 
21 
     | 
    
         
             
                t.verbose    = true
         
     | 
| 
       88 
22 
     | 
    
         
             
              end
         
     | 
| 
       89 
23 
     | 
    
         | 
| 
       90 
24 
     | 
    
         
             
              Rake::Task['functional'].invoke
         
     | 
| 
       91 
25 
     | 
    
         
             
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            task default: :test
         
     | 
    
        data/examples/each_a.rb
    CHANGED
    
    | 
         @@ -3,11 +3,10 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            #          If no messages are on the queue, the program
         
     | 
| 
       4 
4 
     | 
    
         
             
            #          completes without waiting
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            WMQ::QueueManager.connect(: 
     | 
| 
       10 
     | 
    
         
            -
              qmgr.open_queue(: 
     | 
| 
      
 8 
     | 
    
         
            +
            WMQ::QueueManager.connect(q_mgr_name: 'REID') do |qmgr|
         
     | 
| 
      
 9 
     | 
    
         
            +
              qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :input) do |queue|
         
     | 
| 
       11 
10 
     | 
    
         
             
                queue.each do |message|
         
     | 
| 
       12 
11 
     | 
    
         
             
                  puts "Data Received: #{message.data}"
         
     | 
| 
       13 
12 
     | 
    
         
             
                end
         
     | 
    
        data/examples/each_b.rb
    CHANGED
    
    | 
         @@ -2,19 +2,18 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # Sample : each() : Retrieve all messages from a queue that
         
     | 
| 
       3 
3 
     | 
    
         
             
            #          have the same correlation id
         
     | 
| 
       4 
4 
     | 
    
         
             
            #
         
     | 
| 
       5 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
            WMQ::QueueManager.connect(: 
     | 
| 
       9 
     | 
    
         
            -
              qmgr.open_queue(: 
     | 
| 
      
 7 
     | 
    
         
            +
            WMQ::QueueManager.connect(q_mgr_name: 'REID') do |qmgr|
         
     | 
| 
      
 8 
     | 
    
         
            +
              qmgr.open_queue(q_name: 'TEST.QUEUE', mode: :input) do |queue|
         
     | 
| 
       10 
9 
     | 
    
         
             
                message = WMQ::Message.new
         
     | 
| 
       11 
10 
     | 
    
         | 
| 
       12 
11 
     | 
    
         
             
                # Retrieve First message
         
     | 
| 
       13 
     | 
    
         
            -
                if queue.get(:message 
     | 
| 
      
 12 
     | 
    
         
            +
                if queue.get(message: message)
         
     | 
| 
       14 
13 
     | 
    
         
             
                  puts "Data Received: #{message.data}"
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
15 
     | 
    
         
             
                  #Retrieve all subsequent messages that have the same correlation id
         
     | 
| 
       17 
     | 
    
         
            -
                  queue.each(:message 
     | 
| 
      
 16 
     | 
    
         
            +
                  queue.each(message: message, match: WMQ::MQMO_MATCH_CORREL_ID) do |msg|
         
     | 
| 
       18 
17 
     | 
    
         
             
                    puts "Matching Data Received: #{msg.data}"
         
     | 
| 
       19 
18 
     | 
    
         
             
                  end
         
     | 
| 
       20 
19 
     | 
    
         
             
                else
         
     | 
    
        data/examples/each_header.rb
    CHANGED
    
    | 
         @@ -3,19 +3,18 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            #          If no messages are on the queue, the program
         
     | 
| 
       4 
4 
     | 
    
         
             
            #          completes without waiting
         
     | 
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       8 
7 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
            WMQ::QueueManager.connect(: 
     | 
| 
       10 
     | 
    
         
            -
              qmgr.open_queue(: 
     | 
| 
      
 8 
     | 
    
         
            +
            WMQ::QueueManager.connect(q_mgr_name: 'REID') do |qmgr|
         
     | 
| 
      
 9 
     | 
    
         
            +
              qmgr.open_queue(q_name: 'TEST.DEAD', mode: :browse) do |queue|
         
     | 
| 
       11 
10 
     | 
    
         
             
                queue.each do |message|
         
     | 
| 
       12 
11 
     | 
    
         
             
                  puts "Data Received: #{message.data}"
         
     | 
| 
       13 
12 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                  puts  
     | 
| 
      
 13 
     | 
    
         
            +
                  puts 'Message Descriptor:'
         
     | 
| 
       15 
14 
     | 
    
         
             
                  p message.descriptor
         
     | 
| 
       16 
15 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                  puts  
     | 
| 
       18 
     | 
    
         
            -
                  message.headers.each {|header| p header}
         
     | 
| 
      
 16 
     | 
    
         
            +
                  puts 'Headers Received:'
         
     | 
| 
      
 17 
     | 
    
         
            +
                  message.headers.each { |header| p header }
         
     | 
| 
       19 
18 
     | 
    
         
             
                end
         
     | 
| 
       20 
19 
     | 
    
         
             
              end
         
     | 
| 
       21 
20 
     | 
    
         
             
              puts 'Completed.'
         
     | 
    
        data/examples/files_to_q.rb
    CHANGED
    
    | 
         @@ -2,27 +2,26 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            # Example : files_to_q : Place all files in a directory to a queue
         
     | 
| 
       3 
3 
     | 
    
         
             
            #          Each file is written as a separate message
         
     | 
| 
       4 
4 
     | 
    
         
             
            #
         
     | 
| 
       5 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'find'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require 'yaml'
         
     | 
| 
       8 
7 
     | 
    
         
             
            require 'wmq'
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
9 
     | 
    
         
             
            # Call program passing environment name as first parameter
         
     | 
| 
       11 
10 
     | 
    
         
             
            #   The environment corresponds to an entry in the config file
         
     | 
| 
       12 
     | 
    
         
            -
            env 
     | 
| 
      
 11 
     | 
    
         
            +
            env    = ARGV[0] || fail('Command line argument `environment` is required')
         
     | 
| 
       13 
12 
     | 
    
         
             
            config = YAML::load_file('files_to_q.cfg')[env]
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            message 
     | 
| 
      
 14 
     | 
    
         
            +
            message            = WMQ::Message.new
         
     | 
| 
       16 
15 
     | 
    
         
             
            message.descriptor = config['descriptor'] || {}
         
     | 
| 
       17 
     | 
    
         
            -
            tstart 
     | 
| 
       18 
     | 
    
         
            -
            counter 
     | 
| 
      
 16 
     | 
    
         
            +
            tstart             = Time.now
         
     | 
| 
      
 17 
     | 
    
         
            +
            counter            = 0
         
     | 
| 
       19 
18 
     | 
    
         
             
            WMQ::QueueManager.connect(config['qmgr_options']) do |qmgr|
         
     | 
| 
       20 
     | 
    
         
            -
              qmgr.open_queue({: 
     | 
| 
      
 19 
     | 
    
         
            +
              qmgr.open_queue({ mode: :output }.merge(config['output_queue'])) do |queue|
         
     | 
| 
       21 
20 
     | 
    
         
             
                Find.find(config['source_directory']) do |path|
         
     | 
| 
       22 
21 
     | 
    
         
             
                  unless FileTest.directory?(path)
         
     | 
| 
       23 
     | 
    
         
            -
                    printf("%5d: #{path}\n",counter = counter + 1)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    printf("%5d: #{path}\n", counter = counter + 1)
         
     | 
| 
       24 
23 
     | 
    
         
             
                    message.data = File.read(path)
         
     | 
| 
       25 
     | 
    
         
            -
                    queue.put({:message  
     | 
| 
      
 24 
     | 
    
         
            +
                    queue.put({ message: message }.merge(config['put_options']))
         
     | 
| 
       26 
25 
     | 
    
         
             
                  end
         
     | 
| 
       27 
26 
     | 
    
         
             
                end
         
     | 
| 
       28 
27 
     | 
    
         
             
              end
         
     |