abundance 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/lib/abundance.rb +1 -1
  2. data/lib/garden.rb +19 -16
  3. data/lib/gardener.rb +4 -5
  4. metadata +2 -2
data/lib/abundance.rb CHANGED
@@ -105,7 +105,7 @@ class Abundance
105
105
  # === Example
106
106
  # Abundance.init_status(true,'Initialisation Successfull!!!')
107
107
  def Abundance.init_status(success,message)
108
- $seed = {:id => Process.pid, :seed => 'init_status', :success => success, :message => message}
108
+ $init = {:id => Process.pid, :seed => 'init_status', :success => success, :message => message}
109
109
  end
110
110
 
111
111
  end
data/lib/garden.rb CHANGED
@@ -31,7 +31,7 @@ class Garden
31
31
 
32
32
  def initialize
33
33
  @pid = fork do
34
- @quit = false; @full_crop = false; @do_init = false; @seed_all = nil
34
+ @quit = false; @full_crop = false; @do_init = nil; @seed_all = nil; @init_all_crop = []
35
35
  @harvest = []; @rows_port = []; @init_done = []; @seed_all_done = []; @seed_all_crop = []
36
36
  @seeds = []; @sprouts = []; @crops = []; @id = 0
37
37
  @socket_server = Toolshed.socket_server(Toolshed::garden_port)
@@ -47,6 +47,14 @@ class Garden
47
47
  else
48
48
  @rows_port << row_port
49
49
  end
50
+ elsif ! @do_init.nil? && ! @rows_port.empty? && @init_done.size != @do_init
51
+ row_port = @rows_port.shift
52
+ unless @init_done.include?( row_port )
53
+ socket_client_temp(:init,'init_status',row_port)
54
+ @init_done << row_port
55
+ else
56
+ @rows_port << row_port
57
+ end
50
58
  elsif ! @seeds.empty? && ! @rows_port.empty?
51
59
  seed = @seeds.shift
52
60
  @sprouts[seed[:id]] = seed
@@ -56,14 +64,6 @@ class Garden
56
64
  seed = nil
57
65
  row_port = @rows_port.shift
58
66
  socket_client_temp(:quit,seed,row_port)
59
- elsif @do_init && ! @rows_port.empty?
60
- row_port = @rows_port.shift
61
- unless @init_done.include?( row_port )
62
- socket_client_temp(:init,seed,row_port)
63
- @init_done << row_port; @do_init = nil
64
- else
65
- @rows_port << row_port
66
- end
67
67
  else
68
68
  throw :fill_rows
69
69
  end
@@ -143,12 +143,15 @@ class Garden
143
143
  end
144
144
  end
145
145
  when :init
146
- @do_init = true
146
+ @do_init = data
147
147
  @init_return = {:clientaddr => clientaddr, :clientport => clientport}
148
148
  when :init_crop
149
149
  socket_server_send(command,true,clientaddr,clientport)
150
- socket_server_send(command,data, @init_return[:clientaddr], @init_return[:clientport])
151
- @init_return = Hash.new; @init_done = Array.new
150
+ @init_all_crop << data
151
+ if @init_all_crop.size == @do_init
152
+ socket_server_send(command,@init_all_crop, @init_return[:clientaddr], @init_return[:clientport])
153
+ @init_return = Hash.new; @init_done = Array.new; @do_init = nil; @init_all_crop = Array.new
154
+ end
152
155
  when :seed_all
153
156
  @seed_all = data
154
157
  @seed_all_return = {:clientaddr => clientaddr, :clientport => clientport, :data => []}
@@ -244,15 +247,15 @@ class Garden
244
247
  @seed_all = true
245
248
  $seed = {:id => Process.pid, :seed => data}
246
249
  when :init
247
- command, data = socket_client_perm_duplex(:init_crop,$seed)
248
- $seed = nil;
250
+ $init = {:seed => 'init_status', :message => 'No Init Message', :id => Process.pid} if $init.nil?
251
+ command, data = socket_client_perm_duplex(:init_crop,$init)
249
252
  end
250
253
  end
251
- elsif $seed.include?(:success)
254
+ elsif ! $seed[:success].nil?
252
255
  if @seed_all
253
256
  command, data = socket_client_perm_duplex(:seed_all_crop,$seed)
254
257
  @seed_all = false
255
- else
258
+ else
256
259
  command, data = socket_client_perm_duplex(:crop,$seed)
257
260
  end
258
261
  $seed = nil;
data/lib/gardener.rb CHANGED
@@ -46,12 +46,11 @@ class Gardener
46
46
  # === Example
47
47
  # puts gardener.init_status.inspect # => [{:message=>"init ok", :success=>true, :pid=>4760}, {:message=>"init failed", :success=>false, :pid=>4761}]
48
48
  def init_status
49
- status = []
50
- @garden_rows.pids.each do |pid|
51
- command, data = socket_client_perm_duplex(:init,pid)
52
- status << {:success => data[:success], :message => data[:message], :pid => data[:id]}
49
+ command, data = socket_client_perm_duplex(:init,@garden_rows.pids.size)
50
+ data.map! do |row|
51
+ {:success => row[:success], :message => row[:message], :pid => row[:id]}
53
52
  end
54
- return status
53
+ return data
55
54
  end
56
55
 
57
56
  # The +seed+ method for the Gardener instance allow to sow a command in the Gardener's Garden.
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.0.8
4
+ version: 1.0.9
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: 2008-12-14 00:00:00 -05:00
12
+ date: 2008-12-15 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15