rainbows-emtp 0.5.1 → 0.5.2
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/Rakefile +1 -1
- data/lib/rainbows/event_machine_thread_pool.rb +3 -1
- data/lib/rainbows/event_machine_thread_pool/client.rb +33 -30
- data/rainbows-emtp.gemspec +4 -3
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 12ec1b107844d2d9afdebb13afb37a108215539e
         | 
| 4 | 
            +
              data.tar.gz: cdbb172e772e976a83b519d2d8ec5c95d1a6c36b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 49e438d29dc3b33908232e97ef1873205210cbd84966289de085ac06ff37c943ba5c8baa0c9125058bf8e5709b85f56842764d90532e58f1c682c3ed47b2a369
         | 
| 7 | 
            +
              data.tar.gz: 3614bba3b18a6fd41b6226f82b79ed37ccad5e6b0eba80a1a1e0308cf2538cf55d3571982220f0e3529a99bc6311560adbe00be1e195212a7a442679395daac6
         | 
    
        data/Rakefile
    CHANGED
    
    
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # -*- encoding: binary -*-
         | 
| 1 2 |  | 
| 2 3 | 
             
            require 'rainbows'
         | 
| 3 4 |  | 
| @@ -6,8 +7,9 @@ module Rainbows::EventMachineThreadPool | |
| 6 7 | 
             
              extend  Rainbows::PoolSize
         | 
| 7 8 | 
             
              include Rainbows::EventMachine
         | 
| 8 9 |  | 
| 9 | 
            -
              def init_worker_process | 
| 10 | 
            +
              def init_worker_process(worker)
         | 
| 10 11 | 
             
                EM.threadpool_size = Rainbows::O[:pool_size]
         | 
| 12 | 
            +
                logger.info "EventMachineThreadPool pool_size=#{Rainbows::O[:pool_size]}"
         | 
| 11 13 | 
             
                super
         | 
| 12 14 | 
             
              end
         | 
| 13 15 | 
             
            end
         | 
| @@ -1,44 +1,47 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 1 | 
            +
            # -*- encoding: binary -*-
         | 
| 2 | 
            +
            # :enddoc:
         | 
| 4 3 | 
             
            class Rainbows::EventMachineThreadPool::Client <
         | 
| 5 4 | 
             
                  Rainbows::EventMachine::Client
         | 
| 6 5 |  | 
| 6 | 
            +
              def app_dispatch
         | 
| 7 | 
            +
                EM.defer(method(:app_response), method(:response_write))
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 7 10 | 
             
              def app_call input
         | 
| 8 | 
            -
                #  | 
| 11 | 
            +
                @deferred = true # we defer immediately
         | 
| 9 12 | 
             
                set_comm_inactivity_timeout 0
         | 
| 10 13 | 
             
                @env[RACK_INPUT] = input
         | 
| 11 14 | 
             
                @env[REMOTE_ADDR] = @_io.kgio_addr
         | 
| 12 15 | 
             
                @env[ASYNC_CALLBACK] = method(:write_async_response)
         | 
| 13 16 | 
             
                @env[ASYNC_CLOSE] = EM::DefaultDeferrable.new
         | 
| 14 17 | 
             
                @hp.hijack_setup(@env, @_io)
         | 
| 15 | 
            -
                #  | 
| 18 | 
            +
                app_dispatch # must be implemented by subclass
         | 
| 19 | 
            +
              end
         | 
| 16 20 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
                      @deferred = true
         | 
| 28 | 
            -
                    else
         | 
| 29 | 
            -
                      @deferred = nil
         | 
| 30 | 
            -
                      ev_write_response(status, headers, body, @hp.next?)
         | 
| 31 | 
            -
                    end
         | 
| 32 | 
            -
                  # Never ever crash any thread
         | 
| 33 | 
            -
                  rescue Exception => e
         | 
| 34 | 
            -
                    begin # Any user codes should be guarded
         | 
| 35 | 
            -
                      if handler = EM.instance_variable_get(:@error_handler)
         | 
| 36 | 
            -
                        handler.call(e)
         | 
| 37 | 
            -
                      end
         | 
| 38 | 
            -
                    rescue Exception
         | 
| 39 | 
            -
                    end
         | 
| 40 | 
            -
                    handle_error(e)
         | 
| 41 | 
            -
                  end
         | 
| 21 | 
            +
              # this is only called in the master thread
         | 
| 22 | 
            +
              def response_write(response)
         | 
| 23 | 
            +
                if @hp.hijacked?
         | 
| 24 | 
            +
                  @deferred = nil
         | 
| 25 | 
            +
                  hijacked
         | 
| 26 | 
            +
                elsif nil == response[0] || -1 == response[0]
         | 
| 27 | 
            +
                  @deferred = true
         | 
| 28 | 
            +
                else
         | 
| 29 | 
            +
                  @deferred = nil
         | 
| 30 | 
            +
                  ev_write_response(*response, @hp.next?)
         | 
| 42 31 | 
             
                end
         | 
| 32 | 
            +
                rescue => e
         | 
| 33 | 
            +
                  @deferred = nil
         | 
| 34 | 
            +
                  handle_error(e)
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              # fails-safe application dispatch, we absolutely cannot
         | 
| 38 | 
            +
              # afford to fail or raise an exception (killing the thread)
         | 
| 39 | 
            +
              # here because that could cause a deadlock and we'd leak FDs
         | 
| 40 | 
            +
              def app_response
         | 
| 41 | 
            +
                APP.call(@env.merge!(RACK_DEFAULTS))
         | 
| 42 | 
            +
                rescue => e
         | 
| 43 | 
            +
                  Rainbows::Error.app(e) # we guarantee this does not raise
         | 
| 44 | 
            +
                  [ 500, {}, [] ]
         | 
| 43 45 | 
             
              end
         | 
| 46 | 
            +
             | 
| 44 47 | 
             
            end
         | 
    
        data/rainbows-emtp.gemspec
    CHANGED
    
    | @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            # stub: rainbows-emtp 0.5.2 ruby lib
         | 
| 2 3 |  | 
| 3 4 | 
             
            Gem::Specification.new do |s|
         | 
| 4 5 | 
             
              s.name = "rainbows-emtp"
         | 
| 5 | 
            -
              s.version = "0.5. | 
| 6 | 
            +
              s.version = "0.5.2"
         | 
| 6 7 |  | 
| 7 8 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 8 9 | 
             
              s.authors = ["Lin Jen-Shin (godfat)"]
         | 
| 9 | 
            -
              s.date = "2013- | 
| 10 | 
            +
              s.date = "2013-09-17"
         | 
| 10 11 | 
             
              s.description = "EventMachineThreadPool model for Rainbows!"
         | 
| 11 12 | 
             
              s.email = ["godfat (XD) godfat.org"]
         | 
| 12 13 | 
             
              s.files = [
         | 
| @@ -25,7 +26,7 @@ Gem::Specification.new do |s| | |
| 25 26 | 
             
              s.homepage = "https://github.com/godfat/rainbows-emtp"
         | 
| 26 27 | 
             
              s.licenses = ["Apache License 2.0"]
         | 
| 27 28 | 
             
              s.require_paths = ["lib"]
         | 
| 28 | 
            -
              s.rubygems_version = "2. | 
| 29 | 
            +
              s.rubygems_version = "2.1.3"
         | 
| 29 30 | 
             
              s.summary = "EventMachineThreadPool model for Rainbows!"
         | 
| 30 31 |  | 
| 31 32 | 
             
              if s.respond_to? :specification_version then
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rainbows-emtp
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.5. | 
| 4 | 
            +
              version: 0.5.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Lin Jen-Shin (godfat)
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2013- | 
| 11 | 
            +
            date: 2013-09-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rainbows
         | 
| @@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 77 77 | 
             
                  version: '0'
         | 
| 78 78 | 
             
            requirements: []
         | 
| 79 79 | 
             
            rubyforge_project: 
         | 
| 80 | 
            -
            rubygems_version: 2. | 
| 80 | 
            +
            rubygems_version: 2.1.3
         | 
| 81 81 | 
             
            signing_key: 
         | 
| 82 82 | 
             
            specification_version: 4
         | 
| 83 83 | 
             
            summary: EventMachineThreadPool model for Rainbows!
         |