Class: Droonga::Farm
- Inherits:
-
Object
- Object
- Droonga::Farm
- Includes:
- Deferrable, Loggable
- Defined in:
- lib/droonga/farm.rb
Defined Under Namespace
Classes: NoSlice
Instance Method Summary collapse
-
#initialize(name, catalog, loop, options = {}) ⇒ Farm
constructor
A new instance of Farm.
- #process(slice_name, message) ⇒ Object
- #refresh_node_reference ⇒ Object
- #start ⇒ Object
- #stop_gracefully ⇒ Object
- #stop_immediately ⇒ Object
Methods included from Deferrable
Constructor Details
#initialize(name, catalog, loop, options = {}) ⇒ Farm
Returns a new instance of Farm.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/droonga/farm.rb', line 34 def initialize(name, catalog, loop, ={}) @name = name @catalog = catalog @loop = loop @options = @slices = {} slices = @catalog.slices(name) slices.each do |slice_name, | dataset = @catalog.datasets[[:dataset]] slice = Droonga::Slice.new(slice_name, dataset, @loop, @options.merge()) @slices[slice_name] = slice end end |
Instance Method Details
#process(slice_name, message) ⇒ Object
102 103 104 105 106 107 |
# File 'lib/droonga/farm.rb', line 102 def process(slice_name, ) unless @slices.key?(slice_name) raise NoSlice.new(slice_name, :message => , :slices => @slices.keys) end @slices[slice_name].process() end |
#refresh_node_reference ⇒ Object
96 97 98 99 100 |
# File 'lib/droonga/farm.rb', line 96 def refresh_node_reference @slices.each_value do |slice| slice.refresh_node_reference end end |
#start ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/droonga/farm.rb', line 50 def start n_slices = @slices.size if n_slices.zero? on_ready return end n_ready_slices = 0 @slices.each_value do |slice| slice.on_ready = lambda do n_ready_slices += 1 if n_ready_slices == n_slices on_ready end end slice.start end end |
#stop_gracefully ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/droonga/farm.rb', line 69 def stop_gracefully logger.trace("stop_gracefully: start") n_slices = @slices.size if n_slices.zero? yield if block_given? logger.trace("stop_gracefully: done") return end 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? logger.trace("stop_gracefully: done") end end end end |
#stop_immediately ⇒ Object
90 91 92 93 94 |
# File 'lib/droonga/farm.rb', line 90 def stop_immediately @slices.each_value do |slice| slice.stop_immediately end end |