Sha256: 0640e6e03f952a6ee17c504e5521094ca5f4d7689d7cf990eae272d1ed4103d8

Contents?: true

Size: 525 Bytes

Versions: 13

Compression:

Stored size: 525 Bytes

Contents

require 'timeout'

require 'rest-core/middleware'
require 'rest-core/timer'

class RestCore::Timeout
  def self.members; [:timeout]; end
  include RestCore::Middleware

  def call env, &k
    return app.call(env, &k) if env[DRY] || timeout(env) == 0
    process(env, &k)
  end

  def process env, &k
    timer = Timer.new(timeout(env), timeout_error)
    app.call(env.merge(TIMER => timer), &k)
  rescue Exception
    timer.cancel
    raise
  end

  def timeout_error
    ::Timeout::Error.new('execution expired')
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rest-core-3.6.0 lib/rest-core/middleware/timeout.rb
rest-core-3.5.92 lib/rest-core/middleware/timeout.rb
rest-core-3.5.91 lib/rest-core/middleware/timeout.rb
rest-core-3.5.9 lib/rest-core/middleware/timeout.rb
rest-core-3.5.8 lib/rest-core/middleware/timeout.rb
rest-core-3.5.7 lib/rest-core/middleware/timeout.rb
rest-core-3.5.6 lib/rest-core/middleware/timeout.rb
rest-core-3.5.5 lib/rest-core/middleware/timeout.rb
rest-core-3.5.4 lib/rest-core/middleware/timeout.rb
rest-core-3.5.3 lib/rest-core/middleware/timeout.rb
rest-core-3.5.2 lib/rest-core/middleware/timeout.rb
rest-core-3.5.1 lib/rest-core/middleware/timeout.rb
rest-core-3.5.0 lib/rest-core/middleware/timeout.rb