class GroupDelegatorInstances

Takes a set of instantiated objects as arguments and will concurently delegate method calls to each instance in the set. Built in concurrency models include:

- iterative (iterates the method calls on each object in the set)
- threaded (all method calls are done in parallel until all conclude
- first response (continues once any in the set complete the method)

Public Class Methods

new(proxied_objs, concurrency_model = :iterative) click to toggle source

object methods, only

# File lib/group_delegator/group_delegator_instances.rb, line 14
def initialize(proxied_objs, concurrency_model = :iterative)
  @source_objects = [] #contains the delegated objects
  @source_obj_methods = {} #map of all methods to the objects that use them
  raise "No source instances set" unless proxied_objs.size > 0
  sources_data = __set_sources_data(proxied_objs)
  @source_obj_methods = sources_data[:source_methods]
  @source_objects = sources_data[:source_objs]
  @instance_source_group = SourceGroup.new(@source_objects, concurrency_model)
  self
end

Public Instance Methods

method_missing(m, *args, &block) click to toggle source
# File lib/group_delegator/group_delegator_instances.rb, line 25
def method_missing(m, *args, &block)
  if @source_obj_methods.include? m
    resp = @instance_source_group.forward(m, *args, &block)
  else
    raise NoMethodError, "GroupDelegatorKlasses object can't find the method #{m} in any of its sources"
  end
end