abundance 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/garden_cycles.rb +26 -3
- data/lib/gardener.rb +8 -1
- metadata +2 -2
    
        data/lib/garden_cycles.rb
    CHANGED
    
    | @@ -37,6 +37,7 @@ class Garden | |
| 37 37 | 
             
                def route_message_blocks
         | 
| 38 38 | 
             
                  until @message_block_queue.empty?
         | 
| 39 39 | 
             
                    message_block = @message_block_queue.shift
         | 
| 40 | 
            +
             | 
| 40 41 | 
             
                    case message_block[0]
         | 
| 41 42 | 
             
                    when :seed
         | 
| 42 43 | 
             
                      place_seed_in_queue(message_block)
         | 
| @@ -54,6 +55,7 @@ class Garden | |
| 54 55 | 
             
                      message_block[2] = false
         | 
| 55 56 | 
             
                      add_writable(message_block)
         | 
| 56 57 | 
             
                    end
         | 
| 58 | 
            +
             | 
| 57 59 | 
             
                  end
         | 
| 58 60 | 
             
                end
         | 
| 59 61 |  | 
| @@ -61,6 +63,7 @@ class Garden | |
| 61 63 | 
             
                    catch :fill_rows do
         | 
| 62 64 | 
             
                      loop do
         | 
| 63 65 | 
             
            						throw :fill_rows if @waiting_rows.empty?
         | 
| 66 | 
            +
            						
         | 
| 64 67 | 
             
                        if @seed_all_message_block && @seed_all_message_block[4][:row_done].size != @seed_all_message_block[1]
         | 
| 65 68 | 
             
                          row_socket_path = @waiting_rows.shift
         | 
| 66 69 | 
             
                          unless @seed_all_message_block[4][:row_done].include?( row_socket_path )
         | 
| @@ -69,6 +72,7 @@ class Garden | |
| 69 72 | 
             
                          else
         | 
| 70 73 | 
             
                            @waiting_rows << row_socket_path
         | 
| 71 74 | 
             
                          end
         | 
| 75 | 
            +
             | 
| 72 76 | 
             
                        elsif @init_message_block && @init_message_block[4][:row_done].size != @init_message_block[2]
         | 
| 73 77 | 
             
                          row_socket_path = @waiting_rows.shift
         | 
| 74 78 | 
             
                          unless @init_message_block[4][:row_done].include?( row_socket_path )
         | 
| @@ -77,14 +81,18 @@ class Garden | |
| 77 81 | 
             
                          else
         | 
| 78 82 | 
             
                            @waiting_rows << row_socket_path
         | 
| 79 83 | 
             
                          end
         | 
| 84 | 
            +
             | 
| 80 85 | 
             
                        elsif ! @seeds.empty?
         | 
| 81 86 | 
             
                          seed = @seeds.shift; @sprouts[seed[:id]] = seed
         | 
| 82 87 | 
             
                          add_writable([:seed,:sprout,seed,@waiting_rows.shift])
         | 
| 88 | 
            +
             | 
| 83 89 | 
             
                        elsif @close_message_block && ! @waiting_rows.empty?
         | 
| 84 90 | 
             
                          add_writable([:seed,:quit,nil,@waiting_rows.shift])
         | 
| 91 | 
            +
             | 
| 85 92 | 
             
                        else
         | 
| 86 93 | 
             
                          throw :fill_rows
         | 
| 87 | 
            -
             | 
| 94 | 
            +
            						end
         | 
| 95 | 
            +
            						               
         | 
| 88 96 | 
             
                      end
         | 
| 89 97 | 
             
                    end
         | 
| 90 98 | 
             
                  end
         | 
| @@ -94,7 +102,7 @@ class Garden | |
| 94 102 | 
             
                 def readable_main(i_socket)
         | 
| 95 103 | 
             
                   message_block = read_message_block(i_socket)
         | 
| 96 104 | 
             
                   @message_block_queue << message_block
         | 
| 97 | 
            -
                   @reader[:sockets].delete(i_socket) | 
| 105 | 
            +
                   @reader[:sockets].delete(i_socket)
         | 
| 98 106 | 
             
                 end
         | 
| 99 107 |  | 
| 100 108 | 
             
                 def place_seed_in_queue(message_block)
         | 
| @@ -109,25 +117,33 @@ class Garden | |
| 109 117 | 
             
                 end
         | 
| 110 118 |  | 
| 111 119 | 
             
                 def this_row_is_available(message_block)
         | 
| 120 | 
            +
            	
         | 
| 112 121 | 
             
                   if @close_message_block
         | 
| 113 | 
            -
             | 
| 122 | 
            +
            				 message_block = [:row, :quit, nil, message_block[3]]
         | 
| 123 | 
            +
            				
         | 
| 114 124 | 
             
                   elsif @seed_all_message_block && @seed_all_message_block[4][:row_done].size != @seed_all_message_block[1] && ! @seed_all_message_block[4][:row_done].include?( message_block[3] )
         | 
| 115 125 | 
             
                     message_block = [:row, :all, @seed_all_message_block[2], message_block[3]]
         | 
| 116 126 | 
             
                     @seed_all_message_block[4][:row_done] << message_block[3]
         | 
| 127 | 
            +
             | 
| 117 128 | 
             
                   elsif @init_message_block && @init_message_block[4][:row_done].size != @init_message_block[2] && ! @init_message_block[4][:row_done].include?( message_block[3] )
         | 
| 118 129 | 
             
                     message_block = [:row, :init, 'init_status', message_block[3]]
         | 
| 119 130 | 
             
                     @init_message_block[4][:row_done] << message_block[3]
         | 
| 131 | 
            +
             | 
| 120 132 | 
             
                   elsif @seeds.empty?
         | 
| 121 133 | 
             
                     @waiting_rows << message_block[2]
         | 
| 122 134 | 
             
                     message_block = [:row, :wait, nil, message_block[3]]
         | 
| 135 | 
            +
             | 
| 123 136 | 
             
                   else
         | 
| 124 137 | 
             
                     seed = @seeds.shift; @sprouts[seed[:id]] = seed
         | 
| 125 138 | 
             
                     message_block = [:row, :sprout, seed, message_block[3]]
         | 
| 139 | 
            +
             | 
| 126 140 | 
             
                   end
         | 
| 141 | 
            +
             | 
| 127 142 | 
             
                   add_writable(message_block)
         | 
| 128 143 | 
             
                 end
         | 
| 129 144 |  | 
| 130 145 | 
             
                 def save_crop_for(message_block)
         | 
| 146 | 
            +
            	
         | 
| 131 147 | 
             
                   case message_block[1]
         | 
| 132 148 | 
             
                   when :harvest
         | 
| 133 149 | 
             
                     @sprouts[message_block[2][:id]] = nil
         | 
| @@ -139,12 +155,14 @@ class Garden | |
| 139 155 | 
             
                       add_writable(message_block[0..1]+[@crops.compact,@full_crop_message_block[3]])
         | 
| 140 156 | 
             
                       @crops.clear; @full_crop_message_block = nil
         | 
| 141 157 | 
             
                     end
         | 
| 158 | 
            +
             | 
| 142 159 | 
             
                   when :seed_all
         | 
| 143 160 | 
             
                     @seed_all_message_block[4][:crops] << message_block[2]
         | 
| 144 161 | 
             
                     if @seed_all_message_block[4][:crops].size == @seed_all_message_block[1]
         | 
| 145 162 | 
             
                       @seed_all_message_block[2] = @seed_all_message_block[4][:crops]; @seed_all_message_block[4] = nil
         | 
| 146 163 | 
             
                       add_writable(@seed_all_message_block.compact); @seed_all_message_block = nil
         | 
| 147 164 | 
             
                     end
         | 
| 165 | 
            +
             | 
| 148 166 | 
             
                   when :init
         | 
| 149 167 | 
             
                     @init_message_block[4][:crops] << message_block[2]
         | 
| 150 168 | 
             
                     if @init_message_block[4][:crops].size == @init_message_block[2]
         | 
| @@ -152,9 +170,11 @@ class Garden | |
| 152 170 | 
             
                       add_writable(@init_message_block.compact); @init_message_block = nil
         | 
| 153 171 | 
             
                     end
         | 
| 154 172 | 
             
                   end
         | 
| 173 | 
            +
             | 
| 155 174 | 
             
                 end
         | 
| 156 175 |  | 
| 157 176 | 
             
                 def report_growth(message_block)
         | 
| 177 | 
            +
            	
         | 
| 158 178 | 
             
                   case message_block[1]
         | 
| 159 179 | 
             
                   when :progress
         | 
| 160 180 | 
             
                     value = @crops.size.to_f / (@crops.size + @sprouts.compact.size + @seeds.size)
         | 
| @@ -169,10 +189,12 @@ class Garden | |
| 169 189 | 
             
                   else
         | 
| 170 190 | 
             
                     message_block[2] = false
         | 
| 171 191 | 
             
                   end
         | 
| 192 | 
            +
             | 
| 172 193 | 
             
                   add_writable(message_block)
         | 
| 173 194 | 
             
                 end
         | 
| 174 195 |  | 
| 175 196 | 
             
                 def harvest_some(message_block)
         | 
| 197 | 
            +
            	
         | 
| 176 198 | 
             
                   case message_block[1]
         | 
| 177 199 | 
             
                   when :one
         | 
| 178 200 | 
             
                     unless message_block[2].nil?
         | 
| @@ -206,6 +228,7 @@ class Garden | |
| 206 228 | 
             
                   else
         | 
| 207 229 | 
             
                     message_block[2] = false; add_writable(message_block)
         | 
| 208 230 | 
             
                   end
         | 
| 231 | 
            +
             | 
| 209 232 | 
             
                 end
         | 
| 210 233 |  | 
| 211 234 | 
             
                 def close_all(message_block)
         | 
    
        data/lib/gardener.rb
    CHANGED
    
    | @@ -41,7 +41,14 @@ class Gardener | |
| 41 41 |  | 
| 42 42 | 
             
                set_my_socket_as_a(:gardener,@garden.pid)
         | 
| 43 43 | 
             
              end
         | 
| 44 | 
            -
             | 
| 44 | 
            +
             | 
| 45 | 
            +
            	def garden_pid
         | 
| 46 | 
            +
            		@garden.pid
         | 
| 47 | 
            +
            	end
         | 
| 48 | 
            +
            	
         | 
| 49 | 
            +
            	def rows_pids
         | 
| 50 | 
            +
              	@garden_rows.pids
         | 
| 51 | 
            +
            	end
         | 
| 45 52 | 
             
              # The +init_status+ method for the Gardener instance allow to harvest an initialisation status message
         | 
| 46 53 | 
             
              # that would have been set by the Abundance.init_status method, inside the Abundance.gardener's block. 
         | 
| 47 54 | 
             
              # It returns an array of hash, one hash for each garden rows.
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: abundance
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Louis-Philippe Perron
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2009-01- | 
| 12 | 
            +
            date: 2009-01-25 00:00:00 -05:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: []
         | 
| 15 15 |  |