Class: Upfluence::Utils::Thrift::Middleware::Timeout

Inherits:
Object
  • Object
show all
Defined in:
lib/upfluence/utils/thrift/middleware/timeout.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, duration) ⇒ Timeout

Returns a new instance of Timeout.



8
9
10
11
# File 'lib/upfluence/utils/thrift/middleware/timeout.rb', line 8

def initialize(app, duration)
  @app = app
  @duration = duration
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/upfluence/utils/thrift/middleware/timeout.rb', line 13

def method_missing(method, *args, &block)
  Upfluence::Timeout.timeout(@duration) { @app.send(method, *args, &block) }
rescue ::Timeout::Error
  raise ::Thrift::ApplicationException.new(
    ::Thrift::ApplicationException::INTERNAL_ERROR,
    'Timeout reached'
  )
end