Class: Dramatis::Runtime::Task::Continuation::Proc

Inherits:
Object
  • Object
show all
Includes:
Dramatis
Defined in:
lib/dramatis/runtime/task.rb

Instance Method Summary collapse

Methods included from Dramatis

future, interface, release

Constructor Details

#initialize(name, call_thread, result, except) ⇒ Proc

Returns a new instance of Proc.



242
243
244
245
246
247
248
249
250
# File 'lib/dramatis/runtime/task.rb', line 242

def initialize name, call_thread, result, except
  # p "p.n #{call_thread} #{result} #{except}"
  @result_block = result
  @exception_block = except
  @name = name
  @continuation = \
    interface( Dramatis::Runtime::Scheduler.actor ) \
       .send :continuation, self, :call_thread => call_thread
end

Instance Method Details

#continuation_exception(exception) ⇒ Object



266
267
268
269
270
271
272
273
274
# File 'lib/dramatis/runtime/task.rb', line 266

def continuation_exception exception
  # warn "delivering #{exception} => #{@exception_block}"
  # pp exception.backtrace
  if @exception_block
    @exception_block.call exception
  else
    release( @name ).dramatis_exception exception
  end
end

#continuation_result(result) ⇒ Object



262
263
264
# File 'lib/dramatis/runtime/task.rb', line 262

def continuation_result result
  @result_block.call result
end

#exception(exception) ⇒ Object



258
259
260
# File 'lib/dramatis/runtime/task.rb', line 258

def exception exception
  @continuation.exception exception
end

#queuedObject



252
# File 'lib/dramatis/runtime/task.rb', line 252

def queued; end

#result(result) ⇒ Object



254
255
256
# File 'lib/dramatis/runtime/task.rb', line 254

def result result
  @continuation.result result
end