class PG::EM::FeaturedDeferrable

Deferrable with error protectors

Author

Rafal Michalski

Public Class Methods

new(&blk) click to toggle source
# File lib/pg/em/featured_deferrable.rb, line 9
def initialize(&blk)
  completion(&blk) if block_given?
end

Public Instance Methods

bind_status(df) click to toggle source

bind deferred status of this deferrable to other df

# File lib/pg/em/featured_deferrable.rb, line 36
def bind_status(df)
  df.callback { |*a| succeed(*a) }
  df.errback  { |*a| fail(*a) }
end
completion(&blk) click to toggle source
# File lib/pg/em/featured_deferrable.rb, line 13
def completion(&blk)
  callback(&blk)
  errback(&blk)
end
protect(fail_value = nil) { || ... } click to toggle source
# File lib/pg/em/featured_deferrable.rb, line 18
def protect(fail_value = nil)
  yield
rescue Exception => e
  ::EM.next_tick { fail e }
  fail_value
end
protect_and_succeed(fail_value = nil) { || ... } click to toggle source
# File lib/pg/em/featured_deferrable.rb, line 25
def protect_and_succeed(fail_value = nil)
  ret = yield
rescue Exception => e
  ::EM.next_tick { fail e }
  fail_value
else
  ::EM.next_tick { succeed ret }
  ret
end