Class: Droonga::Farm

Inherits:
Object
  • Object
show all
Defined in:
lib/droonga/farm.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, catalog, loop, options = {}) ⇒ Farm

Returns a new instance of Farm.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/droonga/farm.rb', line 23

def initialize(name, catalog, loop, options={})
  @name = name
  @catalog = catalog
  @loop = loop
  @options = options
  @slices = {}
  slices = @catalog.slices(name)
  slices.each do |slice_name, slice_options|
    dataset = @catalog.datasets[slice_options[:dataset]]
    slice = Droonga::Slice.new(dataset,
                               @loop,
                               @options.merge(slice_options))
    @slices[slice_name] = slice
  end
end

Instance Attribute Details

#on_ready=(value) ⇒ Object (writeonly)

Sets the attribute on_ready

Parameters:

  • value

    the value to set the attribute on_ready to.



22
23
24
# File 'lib/droonga/farm.rb', line 22

def on_ready=(value)
  @on_ready = value
end

Instance Method Details

#process(slice_name, message) ⇒ Object



71
72
73
# File 'lib/droonga/farm.rb', line 71

def process(slice_name, message)
  @slices[slice_name].process(message)
end

#startObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/droonga/farm.rb', line 39

def start
  n_ready_slices = 0
  @slices.each_value do |slice|
    slice.on_ready = lambda do
      n_ready_slices += 1
      if n_ready_slices == @slices.size
        @on_ready.call if @on_ready
      end
    end
    slice.start
  end
end

#stop_gracefullyObject



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/droonga/farm.rb', line 52

def stop_gracefully
  n_slices = @slices.size
  n_done_slices = 0
  @slices.each_value do |slice|
    slice.stop_gracefully do
      n_done_slices += 1
      if n_done_slices == n_slices
        yield if block_given?
      end
    end
  end
end

#stop_immediatelyObject



65
66
67
68
69
# File 'lib/droonga/farm.rb', line 65

def stop_immediately
  @slices.each_value do |slice|
    slice.stop_immediately
  end
end