Module: Delayer::Deferred::Deferredable

Included in:
Deferred, Thread
Defined in:
lib/delayer/deferred/deferredable.rb

Overview

なんでもDeferred

Defined Under Namespace

Classes: BackTrace, Callback

Constant Summary collapse

CallbackDefaultOK =
lambda{ |x| x }
CallbackDefaultNG =
lambda{ |err| Delayer::Deferred.fail(err) }

Instance Method Summary collapse

Instance Method Details

#call(value = nil) ⇒ Object

Deferredを直ちに実行する



23
24
# File 'lib/delayer/deferred/deferredable.rb', line 23

def call(value = nil)
_call(:ok, value) end

#callbackObject



36
37
38
39
# File 'lib/delayer/deferred/deferredable.rb', line 36

def callback
    @callback ||= Callback.new(CallbackDefaultOK,
CallbackDefaultNG,
BackTrace.new(nil, nil)) end

#cancelObject

この一連のDeferredをこれ以上実行しない



31
32
33
34
# File 'lib/delayer/deferred/deferredable.rb', line 31

def cancel
    @callback = Callback.new(CallbackDefaultOK,
CallbackDefaultNG,
BackTrace.new(nil, nil).freeze).freeze end

#fail(exception = nil) ⇒ Object

Deferredを直ちに失敗させる



27
28
# File 'lib/delayer/deferred/deferredable.rb', line 27

def fail(exception = nil)
_call(:ng, exception) end

#next(&proc) ⇒ Object Also known as: deferred

このDeferredが成功した場合の処理を追加する。新しいDeferredのインスタンスを返す



12
13
# File 'lib/delayer/deferred/deferredable.rb', line 12

def next(&proc)
_post(:ok, &proc) end

#trap(&proc) ⇒ Object Also known as: error

このDeferredが失敗した場合の処理を追加する。新しいDeferredのインスタンスを返す



18
19
# File 'lib/delayer/deferred/deferredable.rb', line 18

def trap(&proc)
_post(:ng, &proc) end

#wait(second) ⇒ Object

second 秒待って次を実行する

Args

second

待つ秒数(second)

Return

Deferred



46
47
# File 'lib/delayer/deferred/deferredable.rb', line 46

def wait(second)
self.next{ Thread.new{ sleep(second) } } end