class Mato::Timeout

Attributes

duration_sec[R]
filter[R]
on_timeout[R]

Public Class Methods

new(filter, timeout:, on_timeout:) click to toggle source
# File lib/mato/timeout.rb, line 11
def initialize(filter, timeout:, on_timeout:)
  @filter = filter
  @duration_sec = timeout
  @on_timeout = on_timeout

  unless on_timeout
    raise ArgumentError, "Missing on_timeout callback"
  end
end

Public Instance Methods

call(content) click to toggle source
# File lib/mato/timeout.rb, line 21
def call(content)
  ::Timeout.timeout(duration_sec) do
    filter.call(content)
  end
rescue ::Timeout::Error => e
  on_timeout.call(e)
  content
end