Sha256: 779f2877951eb08e92b2a05cbacfed33a135937ac9282ed3e980038f2aa7dee1

Contents?: true

Size: 971 Bytes

Versions: 4

Compression:

Stored size: 971 Bytes

Contents

require 'tengine/core'

class Tengine::Core::HandlerPath
  include Mongoid::Document
  include Mongoid::Timestamps

  field :event_type_name, :type => String
  field :handler_id, :type => Object

  belongs_to :driver, :index => true, :class_name => "Tengine::Core::Driver"

  scope(:event_type_name, lambda{|v| where(:event_type_name => v)})

  index event_type_name: 1, _id: 1

  class << self
    def find_handlers(event_type_name)
      paths = self.event_type_name(event_type_name).to_a
      driver_id_to_handler_id = paths.inject({}) do |d, path|
        d[path.driver_id] ||= []
        d[path.driver_id] << path.handler_id
        d
      end
      drivers = Tengine::Core::Driver.any_in(:_id => paths.map(&:driver_id)).and(:enabled => true, :version => default_driver_version)
      drivers.map do |driver|
        driver.handlers.any_in(:_id => driver_id_to_handler_id[driver.id])
      end.flatten
    end

    attr_accessor :default_driver_version

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tengine_core-1.2.2 lib/tengine/core/handler_path.rb
tengine_core-1.2.1 lib/tengine/core/handler_path.rb
tengine_core-1.2.0 lib/tengine/core/handler_path.rb
tengine_core-1.1.0 lib/tengine/core/handler_path.rb