cztop 0.13.1 → 0.14.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.
- checksums.yaml +5 -5
- data/.gitlab-ci.yml +32 -0
- data/CHANGES.md +6 -0
- data/README.md +15 -223
- data/ci-scripts/install-deps +1 -1
- data/cztop.gemspec +3 -3
- data/lib/cztop/certificate.rb +1 -1
- data/lib/cztop/poller/zmq.rb +3 -2
- data/lib/cztop/version.rb +1 -1
- metadata +14 -15
- data/.travis.yml +0 -37
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 1b76df17a50c624efad9617599401e6b76ae5b50700544d37c5c8d0bf28b92a2
         | 
| 4 | 
            +
              data.tar.gz: c956bf815260cd9cbf7368467a4c9f24d7db33969b706a8ad6d4aa9d61626187
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 35945dabfac2708d8fa666638221495e5beffa0bb901733115a9cdc49a4ed7393e6528f870f5ef6952d780a1ffe96c0eebe24953ee87e20ea058e26d7e6dd333
         | 
| 7 | 
            +
              data.tar.gz: 38343f20bfad8f9b5a3cf735d6bf4f1d23e7bc74ead44f7ebc09df7dbe4fdf2e50722710b230fdf1f70f99a5967ae3bc3eb77e056e7f24a928c8e6c1da6193f7
         | 
    
        data/.gitlab-ci.yml
    ADDED
    
    | @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            .rspec:
         | 
| 2 | 
            +
              image: ruby:latest
         | 
| 3 | 
            +
              stage: test
         | 
| 4 | 
            +
              variables:
         | 
| 5 | 
            +
                ZMQ_VERSION: "stable"
         | 
| 6 | 
            +
                CZMQ_VERSION: "stable"
         | 
| 7 | 
            +
              before_script:
         | 
| 8 | 
            +
                - export LD_LIBRARY_PATH=$HOME/lib # custom libs (for execution)
         | 
| 9 | 
            +
                - export PKG_CONFIG_PATH=$HOME/lib/pkgconfig # custom libs (for linking)
         | 
| 10 | 
            +
                - env
         | 
| 11 | 
            +
                - ci-scripts/install-deps
         | 
| 12 | 
            +
                - gem install bundler --no-document
         | 
| 13 | 
            +
                - bundle install --path vendor/bundle
         | 
| 14 | 
            +
              script:
         | 
| 15 | 
            +
                - bundle exec rspec
         | 
| 16 | 
            +
              cache:
         | 
| 17 | 
            +
                key: "$CI_JOB_NAME"
         | 
| 18 | 
            +
                paths:
         | 
| 19 | 
            +
                  - "vendor/bundle"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
            ruby-latest_with_stable_czmq:
         | 
| 23 | 
            +
              extends: .rspec
         | 
| 24 | 
            +
              variables:
         | 
| 25 | 
            +
                CZMQ_VERSION: "stable"
         | 
| 26 | 
            +
             | 
| 27 | 
            +
             | 
| 28 | 
            +
            ruby-latest_with_HEAD_czmq:
         | 
| 29 | 
            +
              extends: .rspec
         | 
| 30 | 
            +
              allow_failure: true
         | 
| 31 | 
            +
              variables:
         | 
| 32 | 
            +
                CZMQ_VERSION: "HEAD"
         | 
    
        data/CHANGES.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,25 +1,18 @@ | |
| 1 1 | 
             
            # CZTop
         | 
| 2 2 |  | 
| 3 3 | 
             
            CZTop is a CZMQ binding for Ruby. It is based on
         | 
| 4 | 
            -
            [czmq-ffi-gen](https:// | 
| 4 | 
            +
            [czmq-ffi-gen](https://gitlab.com/paddor/czmq-ffi-gen), the generated low-level
         | 
| 5 5 | 
             
            FFI binding of [CZMQ](https://github.com/zeromq/czmq) and has a focus on being
         | 
| 6 6 | 
             
            easy to use for Rubyists (POLS) and providing first class support for security
         | 
| 7 7 | 
             
            mechanisms (like CURVE).
         | 
| 8 8 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
            [cztop | 
| 11 | 
            -
            new, but will contain some reusable patterns described in the Zguide.
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            [](https://travis-ci.org/paddor/cztop?branch=master)
         | 
| 14 | 
            -
            [](https://codeclimate.com/repos/56677a7849f50a141c001784/feed)
         | 
| 15 | 
            -
            [](http://inch-ci.org/github/paddor/cztop)
         | 
| 16 | 
            -
            [](https://gemnasium.com/paddor/cztop)
         | 
| 17 | 
            -
            [](https://coveralls.io/github/paddor/cztop?branch=master)
         | 
| 9 | 
            +
            [](https://gitlab.com/paddor/cztop/commits/master)
         | 
| 10 | 
            +
            [](https://coveralls.io/gitlab/paddor/cztop?branch=master)
         | 
| 18 11 | 
             
            [](LICENSE)
         | 
| 19 12 |  | 
| 20 13 | 
             
            ## Goals
         | 
| 21 14 |  | 
| 22 | 
            -
            Here are some some of the goals I  | 
| 15 | 
            +
            Here are some some of the goals I had in mind for this library:
         | 
| 23 16 |  | 
| 24 17 | 
             
            - [x] as easy as possible, Ruby-esque API
         | 
| 25 18 | 
             
            - [x] first class support for security (CURVE mechanism)
         | 
| @@ -100,11 +93,10 @@ More information in the [API documentation](http://www.rubydoc.info/github/paddo | |
| 100 93 | 
             
                * but you can: `CZTop::Socket.new_by_type(:REP)`
         | 
| 101 94 | 
             
              * e.g. `#subscribe` only exists on CZTop::Socket::SUB
         | 
| 102 95 | 
             
            * DRAFT API ready
         | 
| 103 | 
            -
              *  | 
| 104 | 
            -
              *  | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
              * there is `#group` and `#group=` on CZTop::Frame
         | 
| 96 | 
            +
              * certain DRAFT methods are supported if the libraries (ZMQ/CZMQ) have been compiled with DRAFT APIs enabled (`--enable-drafts`)
         | 
| 97 | 
            +
              * use `CZMQ::FFI.has_draft?` to check if the CZMQ DRAFT API is available
         | 
| 98 | 
            +
              * use `CZMQ::FFI::LibZMQ.has_draft?` to check if the ZMQ DRAFT API is available
         | 
| 99 | 
            +
              * extend CZTop to your needs
         | 
| 108 100 | 
             
            * ZMTP 3.1 heartbeat ready
         | 
| 109 101 | 
             
              * `socket.options.heartbeat_ivl = 2000`
         | 
| 110 102 | 
             
              * `socket.options.heartbeat_timeout = 8000`
         | 
| @@ -113,8 +105,8 @@ More information in the [API documentation](http://www.rubydoc.info/github/paddo | |
| 113 105 |  | 
| 114 106 | 
             
            You'll need:
         | 
| 115 107 |  | 
| 116 | 
            -
            * CZMQ >= 4. | 
| 117 | 
            -
            * ZMQ >= 4.2 | 
| 108 | 
            +
            * CZMQ >= 4.1
         | 
| 109 | 
            +
            * ZMQ >= 4.2
         | 
| 118 110 |  | 
| 119 111 | 
             
            For security mechanisms like CURVE, it's recommended to use Libsodium. However,
         | 
| 120 112 | 
             
            ZMQ can be compiled with tweetnacl enabled.
         | 
| @@ -165,222 +157,22 @@ Or install it yourself as: | |
| 165 157 | 
             
            The API should be fairly straight-forward to anyone who is familiar with CZMQ
         | 
| 166 158 | 
             
            and Ruby.  The following API documentation is currently available:
         | 
| 167 159 |  | 
| 168 | 
            -
            * [YARD API documentation](http://www.rubydoc.info/github/paddor/cztop) (HEAD)
         | 
| 169 160 | 
             
            * [YARD API documentation](http://www.rubydoc.info/gems/cztop) (release)
         | 
| 170 161 |  | 
| 171 | 
            -
            Feel free to start a [wiki](https:// | 
| 162 | 
            +
            Feel free to start a [wiki](https://gitlab.com/paddor/cztop/wiki) page.
         | 
| 172 163 |  | 
| 173 164 | 
             
            ## Performance
         | 
| 174 165 |  | 
| 175 166 | 
             
            Performance should be pretty okay since this is based on czmq-ffi-gen, which is
         | 
| 176 | 
            -
            reasonably thin.  CZTop is  | 
| 177 | 
            -
            nice error checking. But hey, it's Ruby. Don't expect 5M messages per second
         | 
| 178 | 
            -
            with a latency of 3us.
         | 
| 179 | 
            -
             | 
| 180 | 
            -
            The measured latency on my laptop ranges from ~20us to ~60us per message for
         | 
| 181 | 
            -
            1kb messages, depending on whether transport is inproc, IPC, or TCP/IP.
         | 
| 167 | 
            +
            reasonably thin.  CZTop is just a convenience layer.
         | 
| 182 168 |  | 
| 183 | 
            -
            Make sure  | 
| 184 | 
            -
            [perf](https:// | 
| 169 | 
            +
            Make sure to check out the
         | 
| 170 | 
            +
            [perf](https://gitlab.com/paddor/cztop/blob/master/perf) directory for latency
         | 
| 185 171 | 
             
            and throughput measurement scripts.
         | 
| 186 172 |  | 
| 187 173 | 
             
            ## Usage
         | 
| 188 174 |  | 
| 189 | 
            -
            See the [examples](https:// | 
| 190 | 
            -
             | 
| 191 | 
            -
            ### rep.rb:
         | 
| 192 | 
            -
             | 
| 193 | 
            -
            ```ruby
         | 
| 194 | 
            -
            #!/usr/bin/env ruby
         | 
| 195 | 
            -
            require 'cztop'
         | 
| 196 | 
            -
             | 
| 197 | 
            -
            # create and bind socket
         | 
| 198 | 
            -
            socket = CZTop::Socket::REP.new("ipc:///tmp/req_rep_example")
         | 
| 199 | 
            -
            puts "<<< Socket bound to #{socket.last_endpoint.inspect}"
         | 
| 200 | 
            -
             | 
| 201 | 
            -
            # Simply echo every message, with every frame String#upcase'd.
         | 
| 202 | 
            -
            while msg = socket.receive
         | 
| 203 | 
            -
              puts "<<< #{msg.to_a.inspect}"
         | 
| 204 | 
            -
              socket << msg.to_a.map(&:upcase)
         | 
| 205 | 
            -
            end
         | 
| 206 | 
            -
            ```
         | 
| 207 | 
            -
             | 
| 208 | 
            -
            ### req.rb:
         | 
| 209 | 
            -
             | 
| 210 | 
            -
            ```ruby
         | 
| 211 | 
            -
            #!/usr/bin/env ruby
         | 
| 212 | 
            -
            require 'cztop'
         | 
| 213 | 
            -
             | 
| 214 | 
            -
            # connect
         | 
| 215 | 
            -
            socket = CZTop::Socket::REQ.new("ipc:///tmp/req_rep_example")
         | 
| 216 | 
            -
            puts ">>> Socket connected."
         | 
| 217 | 
            -
             | 
| 218 | 
            -
            # simple string
         | 
| 219 | 
            -
            socket << "foobar"
         | 
| 220 | 
            -
            msg = socket.receive
         | 
| 221 | 
            -
            puts ">>> #{msg.to_a.inspect}"
         | 
| 222 | 
            -
             | 
| 223 | 
            -
            # multi frame message as array
         | 
| 224 | 
            -
            socket << %w[foo bar baz]
         | 
| 225 | 
            -
            msg = socket.receive
         | 
| 226 | 
            -
            puts ">>> #{msg.to_a.inspect}"
         | 
| 227 | 
            -
             | 
| 228 | 
            -
            # manually instantiating a Message
         | 
| 229 | 
            -
            msg = CZTop::Message.new("bla")
         | 
| 230 | 
            -
            msg << "another frame" # append a frame
         | 
| 231 | 
            -
            socket << msg
         | 
| 232 | 
            -
            msg = socket.receive
         | 
| 233 | 
            -
            puts ">>> #{msg.to_a.inspect}"
         | 
| 234 | 
            -
             | 
| 235 | 
            -
            ##
         | 
| 236 | 
            -
            # This will send 20 additional messages:
         | 
| 237 | 
            -
            #
         | 
| 238 | 
            -
            #   $ ./req.rb 20
         | 
| 239 | 
            -
            #
         | 
| 240 | 
            -
            if ARGV.first
         | 
| 241 | 
            -
              ARGV.first.to_i.times do
         | 
| 242 | 
            -
                socket << ["fooooooooo", "baaaaaar"]
         | 
| 243 | 
            -
                puts ">>> " + socket.receive.to_a.inspect
         | 
| 244 | 
            -
              end
         | 
| 245 | 
            -
            end
         | 
| 246 | 
            -
            ```
         | 
| 247 | 
            -
             | 
| 248 | 
            -
            ### Running it
         | 
| 249 | 
            -
             | 
| 250 | 
            -
            ```
         | 
| 251 | 
            -
            $ ./rep.rb & ./req.rb 3
         | 
| 252 | 
            -
            [3] 35321
         | 
| 253 | 
            -
            >>> Socket connected.
         | 
| 254 | 
            -
            <<< Socket bound to "ipc:///tmp/req_rep_example"
         | 
| 255 | 
            -
            <<< ["foobar"]
         | 
| 256 | 
            -
            >>> ["FOOBAR"]
         | 
| 257 | 
            -
            <<< ["foo", "bar", "baz"]
         | 
| 258 | 
            -
            >>> ["FOO", "BAR", "BAZ"]
         | 
| 259 | 
            -
            <<< ["bla", "another frame"]
         | 
| 260 | 
            -
            >>> ["BLA", "ANOTHER FRAME"]
         | 
| 261 | 
            -
            <<< ["fooooooooo", "baaaaaar"]
         | 
| 262 | 
            -
            >>> ["FOOOOOOOOO", "BAAAAAAR"]
         | 
| 263 | 
            -
            <<< ["fooooooooo", "baaaaaar"]
         | 
| 264 | 
            -
            >>> ["FOOOOOOOOO", "BAAAAAAR"]
         | 
| 265 | 
            -
            <<< ["fooooooooo", "baaaaaar"]
         | 
| 266 | 
            -
            >>> ["FOOOOOOOOO", "BAAAAAAR"]
         | 
| 267 | 
            -
            $
         | 
| 268 | 
            -
            ```
         | 
| 269 | 
            -
             | 
| 270 | 
            -
            ## TODO
         | 
| 271 | 
            -
             | 
| 272 | 
            -
            * [x] pack generated code into its own gem ([czmq-ffi-gen](https://github.com/paddor/czmq-ffi-gen))
         | 
| 273 | 
            -
            * think of a neat Ruby API, including:
         | 
| 274 | 
            -
              - [x] Actor
         | 
| 275 | 
            -
              - [x] Beacon
         | 
| 276 | 
            -
              - [x] Certificate
         | 
| 277 | 
            -
              - [x] Socket
         | 
| 278 | 
            -
                - [50%] access to all socket options
         | 
| 279 | 
            -
                - [x] Security mechanisms
         | 
| 280 | 
            -
              - [x] Message
         | 
| 281 | 
            -
              - [x] Frame
         | 
| 282 | 
            -
                - [x] enumerable Frames
         | 
| 283 | 
            -
              - [x] Authenticator
         | 
| 284 | 
            -
              - [x] Loop
         | 
| 285 | 
            -
              - [x] Monitor
         | 
| 286 | 
            -
              - [x] Poller
         | 
| 287 | 
            -
              - [x] Proxy
         | 
| 288 | 
            -
              - [x] Config
         | 
| 289 | 
            -
              - [x] Z85
         | 
| 290 | 
            -
            * write the missing XML API files in CZMQ
         | 
| 291 | 
            -
              - [x] zarmour.xml
         | 
| 292 | 
            -
              - [x] zconfig.xml
         | 
| 293 | 
            -
              - [x] zsock_option.xml
         | 
| 294 | 
            -
              - [x] zcert.xml
         | 
| 295 | 
            -
              - [x] zcertstore.xml
         | 
| 296 | 
            -
            * [x] check availability of libsodium within CZTop
         | 
| 297 | 
            -
            * [x] read error strings for exceptions where appropriate (zmq_strerror)
         | 
| 298 | 
            -
            * [x] add support for ZMTP 3.1 heartbeats in CZMQ
         | 
| 299 | 
            -
            * [x] add padded variant of Z85
         | 
| 300 | 
            -
            * add more examples
         | 
| 301 | 
            -
              * [x] [simple REQ/REP](https://github.com/paddor/cztop/tree/master/examples/simple_req_rep)
         | 
| 302 | 
            -
              * [x] [Taxy System](https://github.com/paddor/cztop/tree/master/examples/taxi_system) with CURVE security and heartbeating
         | 
| 303 | 
            -
                * [x] change from ROUTER/DEALER to SERVER/CLIENT
         | 
| 304 | 
            -
              * [x] [Actor](https://github.com/paddor/cztop/tree/master/examples/ruby_actor) with Ruby block
         | 
| 305 | 
            -
              * [ ] PUSH/PULL
         | 
| 306 | 
            -
              * [ ] PUB/SUB
         | 
| 307 | 
            -
            * [ ] add performance benchmarks
         | 
| 308 | 
            -
              * [x] inproc latency
         | 
| 309 | 
            -
              * [x] inproc throughput
         | 
| 310 | 
            -
              * [x] local/remote latency
         | 
| 311 | 
            -
              * [ ] local/remote throughput
         | 
| 312 | 
            -
              * see [perf](https://github.com/paddor/cztop/blob/master/perf) directory
         | 
| 313 | 
            -
            * [x] support older versions of ZMQ
         | 
| 314 | 
            -
              * [x] ZMQ HEAD
         | 
| 315 | 
            -
                * [x] tested on CI
         | 
| 316 | 
            -
              * [x] ZMQ 4.1
         | 
| 317 | 
            -
                * [x] tested on CI
         | 
| 318 | 
            -
                * as of April 2016, this isn't the case anymore
         | 
| 319 | 
            -
              * [x] ZMQ 4.0
         | 
| 320 | 
            -
                * [x] tested on CI
         | 
| 321 | 
            -
                * as of March 2016, this isn't the case anymore
         | 
| 322 | 
            -
              * [ ] ZMQ 3.2
         | 
| 323 | 
            -
                * too big a pain ([d5172ab](https://github.com/paddor/czmq-ffi-gen/commit/d5172ab6db64999c50ba24f71569acf1dd45af51))
         | 
| 324 | 
            -
            * [x] support multiple versions of CZMQ
         | 
| 325 | 
            -
              * [x] CZMQ HEAD
         | 
| 326 | 
            -
                * [x] test on CI
         | 
| 327 | 
            -
              * [x] CZMQ 3.0.2 (current stable)
         | 
| 328 | 
            -
                * no `zcert_meta_unset()` ([zeromq/czmq#1246](https://github.com/zeromq/czmq/issues/1246))
         | 
| 329 | 
            -
                  * [x] adapt czmq-ffi-gen so it doesn't raise while `attach_function`
         | 
| 330 | 
            -
                * no `zproc`(especially no `zproc_has_curve()`)
         | 
| 331 | 
            -
                  * [x] adapt czmq-ffi-gen so it doesn't raise while `attach_function`, attach `zsys_has_curve()` instead (under same name)
         | 
| 332 | 
            -
                * [x] adapt test suite to skip affected test examples
         | 
| 333 | 
            -
                * [x] test on CI
         | 
| 334 | 
            -
                * as of March, 2016, this isn't the case anymore
         | 
| 335 | 
            -
            * [x] port [Poller](http://www.rubydoc.info/gems/cztop/CZTop/Poller) to `zmq_poll()`
         | 
| 336 | 
            -
              * backwards compatible (`#add_reader`, `#add_writer`, `#wait` behave the same)
         | 
| 337 | 
            -
              * but in addition, it has `#readables` and `#writables` which return arrays of sockets
         | 
| 338 | 
            -
              * could then be used in Celluloid::ZMQ
         | 
| 339 | 
            -
            * [ ] add `Message#to_s`
         | 
| 340 | 
            -
              * return frame as string, if there's only one frame
         | 
| 341 | 
            -
              * raise if there are multiple frames
         | 
| 342 | 
            -
              * only safe to use on messages from SERVER/CLIENT sockets
         | 
| 343 | 
            -
              * single-part messages are the future
         | 
| 344 | 
            -
              * not sure yet
         | 
| 345 | 
            -
            * [x] get rid of Loop
         | 
| 346 | 
            -
              * cannot handle CLIENT/SERVER sockets
         | 
| 347 | 
            -
              * there good timer gems for Ruby
         | 
| 348 | 
            -
              * Poller can be used to embed in an existing event loop (Celluloid), or make your own trivial one
         | 
| 349 | 
            -
            * [x] provide `z85encode` and `z85decode` utilities
         | 
| 350 | 
            -
              * can be used in a pipeline (limited memory usage)
         | 
| 351 | 
            -
              * reusable interface: `Z85::Pipe`
         | 
| 352 | 
            -
             | 
| 353 | 
            -
            ## Reasons
         | 
| 354 | 
            -
             | 
| 355 | 
            -
            Why another CZMQ Ruby binding? Here is a list of existing projects I found and
         | 
| 356 | 
            -
            the issues with them, from my point of view:
         | 
| 357 | 
            -
             | 
| 358 | 
            -
            * [Asmod4n/ruby-ffi-czmq](https://github.com/Asmod4n/ruby-ffi-czmq)
         | 
| 359 | 
            -
              * outdated
         | 
| 360 | 
            -
              * according to its author, it's an "abomination"
         | 
| 361 | 
            -
            * [methodmissing/rbczmq](https://github.com/methodmissing/rbczmq)
         | 
| 362 | 
            -
              * no support for security features (see [methodmissing/rbczmq#28](https://github.com/methodmissing/rbczmq/issues/28))
         | 
| 363 | 
            -
              * no JRuby support (see [methodmissing/rbczmq#48](https://github.com/methodmissing/rbczmq/issues/48))
         | 
| 364 | 
            -
              * doesn't feel like Ruby
         | 
| 365 | 
            -
            * [mtortonesi/ruby-czmq](https://github.com/mtortonesi/ruby-czmq)
         | 
| 366 | 
            -
              * no tests
         | 
| 367 | 
            -
              * no documentation
         | 
| 368 | 
            -
              * outdated
         | 
| 369 | 
            -
              * doesn't feel like Ruby
         | 
| 370 | 
            -
            * [chuckremes/ffi-rzmq](https://github.com/chuckremes/ffi-rzmq)
         | 
| 371 | 
            -
              * support discontinued
         | 
| 372 | 
            -
              * low level ZMQ gem, not CZMQ
         | 
| 373 | 
            -
             | 
| 374 | 
            -
            Furthermore, I knew about the generated low-level Ruby FFI binding in the
         | 
| 375 | 
            -
            [zeromq/czmq](https://github.com/zeromq/czmq) repository. I wanted to make use
         | 
| 376 | 
            -
            of it because I love that it's generated (and thus, most likely correct
         | 
| 377 | 
            -
            and up-to-date). Unfortunately, it was in pretty bad shape and missing a few
         | 
| 378 | 
            -
            CZMQ classes.
         | 
| 379 | 
            -
             | 
| 380 | 
            -
            So I decided to improve the quality and usability of the binding and add the
         | 
| 381 | 
            -
            missing classes. The result is
         | 
| 382 | 
            -
            [czmq-ffi-gen](https://github.com/paddor/czmq-ffi-gen) which provides a solid
         | 
| 383 | 
            -
            foundation for CZTop.
         | 
| 175 | 
            +
            See the [examples](https://gitlab.com/paddor/cztop/blob/master/examples) directory for some examples.
         | 
| 384 176 |  | 
| 385 177 |  | 
| 386 178 | 
             
            ## Contributing
         | 
    
        data/ci-scripts/install-deps
    CHANGED
    
    
    
        data/cztop.gemspec
    CHANGED
    
    | @@ -18,10 +18,10 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 | 
            -
              spec.add_runtime_dependency "czmq-ffi-gen", "~> 0. | 
| 21 | 
            +
              spec.add_runtime_dependency "czmq-ffi-gen", "~> 0.16"
         | 
| 22 22 |  | 
| 23 | 
            -
              spec.add_development_dependency "bundler" | 
| 24 | 
            -
              spec.add_development_dependency "rake" | 
| 23 | 
            +
              spec.add_development_dependency "bundler"
         | 
| 24 | 
            +
              spec.add_development_dependency "rake"
         | 
| 25 25 | 
             
              spec.add_development_dependency "rspec"
         | 
| 26 26 | 
             
              spec.add_development_dependency "minitest"
         | 
| 27 27 | 
             
              spec.add_development_dependency "rspec-given", "~> 3.8.0"
         | 
    
        data/lib/cztop/certificate.rb
    CHANGED
    
    
    
        data/lib/cztop/poller/zmq.rb
    CHANGED
    
    | @@ -9,8 +9,9 @@ module CZTop | |
| 9 9 |  | 
| 10 10 | 
             
                extend ::FFI::Library
         | 
| 11 11 | 
             
                lib_name = 'libzmq'
         | 
| 12 | 
            -
                 | 
| 13 | 
            -
             | 
| 12 | 
            +
                lib_dirs = ['/usr/local/lib', '/opt/local/lib', '/usr/lib64']
         | 
| 13 | 
            +
                lib_dirs = [*ENV['LIBZMQ_PATH'].split(':'), *lib_dirs] if ENV['LIBZMQ_PATH']
         | 
| 14 | 
            +
                lib_paths = lib_dirs.map { |path| "#{path}/#{lib_name}.#{::FFI::Platform::LIBSUFFIX}" }
         | 
| 14 15 | 
             
                ffi_lib lib_paths + [lib_name]
         | 
| 15 16 |  | 
| 16 17 | 
             
                # This represents a +zmq_poller_event_t+ as in:
         | 
    
        data/lib/cztop/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cztop
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.14.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Patrik Wenger
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2019-11-25 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: czmq-ffi-gen
         | 
| @@ -16,42 +16,42 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0. | 
| 19 | 
            +
                    version: '0.16'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 0. | 
| 26 | 
            +
                    version: '0.16'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: bundler
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: ' | 
| 33 | 
            +
                    version: '0'
         | 
| 34 34 | 
             
              type: :development
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 38 | 
            +
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: ' | 
| 40 | 
            +
                    version: '0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: rake
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - - " | 
| 45 | 
            +
                - - ">="
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '0'
         | 
| 48 48 | 
             
              type: :development
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - - " | 
| 52 | 
            +
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: rspec
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -216,8 +216,8 @@ extensions: [] | |
| 216 216 | 
             
            extra_rdoc_files: []
         | 
| 217 217 | 
             
            files:
         | 
| 218 218 | 
             
            - ".gitignore"
         | 
| 219 | 
            +
            - ".gitlab-ci.yml"
         | 
| 219 220 | 
             
            - ".rspec"
         | 
| 220 | 
            -
            - ".travis.yml"
         | 
| 221 221 | 
             
            - ".yardopts"
         | 
| 222 222 | 
             
            - AUTHORS
         | 
| 223 223 | 
             
            - CHANGES.md
         | 
| @@ -302,8 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 302 302 | 
             
                - !ruby/object:Gem::Version
         | 
| 303 303 | 
             
                  version: '0'
         | 
| 304 304 | 
             
            requirements: []
         | 
| 305 | 
            -
             | 
| 306 | 
            -
            rubygems_version: 2.6.8
         | 
| 305 | 
            +
            rubygems_version: 3.0.6
         | 
| 307 306 | 
             
            signing_key: 
         | 
| 308 307 | 
             
            specification_version: 4
         | 
| 309 308 | 
             
            summary: CZMQ Ruby binding, based on the generated low-level FFI bindings of CZMQ
         | 
    
        data/.travis.yml
    DELETED
    
    | @@ -1,37 +0,0 @@ | |
| 1 | 
            -
            language: ruby
         | 
| 2 | 
            -
            dist: trusty
         | 
| 3 | 
            -
            sudo: false
         | 
| 4 | 
            -
            cache:
         | 
| 5 | 
            -
              directories:
         | 
| 6 | 
            -
                - $HOME/.ccache
         | 
| 7 | 
            -
                - $HOME/.bundle
         | 
| 8 | 
            -
            rvm:
         | 
| 9 | 
            -
              - 2.4.2
         | 
| 10 | 
            -
              - 2.3.5
         | 
| 11 | 
            -
              - 2.2.8
         | 
| 12 | 
            -
              - jruby-head
         | 
| 13 | 
            -
              - rubinius-3.86
         | 
| 14 | 
            -
            env:
         | 
| 15 | 
            -
              # NOTE: These are recognized by czmq-ffi-gen's CI scripts.
         | 
| 16 | 
            -
              - CZMQ_VERSION=HEAD ZMQ_VERSION=HEAD
         | 
| 17 | 
            -
              - CZMQ_VERSION=stable ZMQ_VERSION=stable
         | 
| 18 | 
            -
            matrix:
         | 
| 19 | 
            -
              exclude:
         | 
| 20 | 
            -
                - rvm: 2.3.5
         | 
| 21 | 
            -
                  env: CZMQ_VERSION=HEAD ZMQ_VERSION=HEAD
         | 
| 22 | 
            -
                - rvm: 2.2.8
         | 
| 23 | 
            -
                  env: CZMQ_VERSION=HEAD ZMQ_VERSION=HEAD
         | 
| 24 | 
            -
                - rvm: jruby-head
         | 
| 25 | 
            -
                  env: CZMQ_VERSION=HEAD ZMQ_VERSION=HEAD
         | 
| 26 | 
            -
                - rvm: rubinius-3.86
         | 
| 27 | 
            -
                  env: CZMQ_VERSION=HEAD ZMQ_VERSION=HEAD
         | 
| 28 | 
            -
              allow_failures:
         | 
| 29 | 
            -
                - rvm: rubinius-3.86
         | 
| 30 | 
            -
            before_install:
         | 
| 31 | 
            -
              - PATH="/usr/lib/ccache:$PATH" # enable ccache
         | 
| 32 | 
            -
              - export LD_LIBRARY_PATH=$HOME/lib # custom libs (for execution)
         | 
| 33 | 
            -
              - export PKG_CONFIG_PATH=$HOME/lib/pkgconfig # custom libs (for linking)
         | 
| 34 | 
            -
              - export BUNDLE_PATH=$HOME/.bundle # bundle caching
         | 
| 35 | 
            -
              - ci-scripts/install-deps
         | 
| 36 | 
            -
              - gem install bundler -v 1.10.6
         | 
| 37 | 
            -
            script: bundle exec rake spec
         |