Sha256: 1e8c7353bfec31502f7e481c42aa00249a3d4077b2ccd5e2d210c1e4bd9cc1cc

Contents?: true

Size: 996 Bytes

Versions: 5

Compression:

Stored size: 996 Bytes

Contents

class TaskHandler
  if RUBY_PLATFORM == 'opal'
    # On the front-end we setup a proxy class to the backend that returns
    # promises for all calls.
    def self.method_missing(name, *args, &block)
      $page.tasks.call(self.name, name, *args, &block)
    end
  else
    def initialize(channel=nil, dispatcher=nil)
      @channel = channel
      @dispatcher = dispatcher
    end

    def self.inherited(subclass)
      @subclasses ||= []
      @subclasses << subclass
    end

    def self.known_handlers
      @subclasses ||= []
    end

    # On the backend, we proxy all class methods like we would
    # on the front-end.  This returns promises.
    def self.method_missing(name, *args, &block)
      promise = Promise.new

      begin
        result = self.new(nil, nil).send(name, *args, &block)

        promise.resolve(result)
      rescue => e
        puts "Task Error: #{e.inspect}"
        puts e.backtrace
        promise.reject(e)
      end

      return promise
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
volt-0.8.14 lib/volt/tasks/task_handler.rb
volt-0.8.13 lib/volt/tasks/task_handler.rb
volt-0.8.11 lib/volt/tasks/task_handler.rb
volt-0.8.10 lib/volt/tasks/task_handler.rb
volt-0.8.9 lib/volt/tasks/task_handler.rb