abundance 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/lib/abundance.rb CHANGED
@@ -90,7 +90,7 @@ class Abundance
90
90
 
91
91
  def Abundance.grow(&grow_block)
92
92
  loop do
93
- unless $seed.nil? || $seed.include?(:message)
93
+ unless $seed.nil? || $seed.include?(:message)
94
94
  grow_block.call(Seed.new)
95
95
  end
96
96
  Thread.stop
data/lib/garden.rb CHANGED
@@ -31,9 +31,8 @@ class Garden
31
31
 
32
32
  def initialize
33
33
  @pid = fork do
34
- @quit = false; @full_crop = false
35
- @harvest = []
36
- @rows_port = []
34
+ @quit = false; @full_crop = false; @do_init = false
35
+ @harvest = []; @rows_port = []; @init_done = []
37
36
  @seeds = []; @sprouts = []; @crops = []; @id = 0
38
37
  @socket_server = Toolshed.socket_server(Toolshed::garden_port)
39
38
  @socket_client_temp = Toolshed.socket_client_temp
@@ -49,6 +48,12 @@ class Garden
49
48
  seed = nil
50
49
  row_port = @rows_port.shift
51
50
  socket_client_temp(:quit,seed,row_port)
51
+ elsif @do_init && ! @rows_port.empty?
52
+ row_port = @rows_port.shift
53
+ unless @init_done.include?( row_port )
54
+ socket_client_temp(:init,seed,row_port)
55
+ @init_done << row_port; @do_init = nil
56
+ end
52
57
  else
53
58
  throw :fill_rows
54
59
  end
@@ -56,7 +61,7 @@ class Garden
56
61
  end
57
62
  command, data, clientport, clientname, clientaddr = socket_server_recv
58
63
  case command
59
- when :seed
64
+ when :seed
60
65
  @id += 1; @seeds << {:id => @id , :seed => data}
61
66
  socket_server_send(command,@id,clientaddr,clientport)
62
67
  when :row
@@ -71,7 +76,7 @@ class Garden
71
76
  @sprouts[seed[:id]] = seed
72
77
  end
73
78
  socket_server_send(command,seed,clientaddr,clientport)
74
- when :crop
79
+ when :crop
75
80
  @sprouts[data[:id]] = nil
76
81
  @crops[data[:id]] = data; socket_server_send(command,true,clientaddr,clientport)
77
82
  if @harvest[data[:id]]
@@ -127,6 +132,12 @@ class Garden
127
132
  socket_server_send(command,false,clientaddr,clientport)
128
133
  end
129
134
  end
135
+ when :init
136
+ @do_init = true;
137
+ @init_return = {:clientaddr => clientaddr, :clientport => clientport}
138
+ when :init_crop
139
+ socket_server_send(command,true,clientaddr,clientport)
140
+ socket_server_send(command,data, @init_return[:clientaddr], @init_return[:clientport])
130
141
  when :close
131
142
  if data[:level] == :garden
132
143
  @seeds_pid = data[:pid]
@@ -185,6 +196,7 @@ class Garden
185
196
  @pids = []
186
197
  rows.times do
187
198
  row_port = Toolshed.available_port
199
+ @socket_client_perm = Toolshed.socket_client_perm
188
200
  @pids << fork do
189
201
  @socket_server = Toolshed.socket_server(row_port)
190
202
  t1 = Thread.new do
@@ -192,7 +204,6 @@ class Garden
192
204
  end
193
205
 
194
206
  t2 = Thread.new do
195
- @socket_client_perm = Toolshed.socket_client_perm
196
207
  loop do
197
208
  if $seed.nil?
198
209
  command, data = socket_client_perm_duplex(:row,row_port)
@@ -204,15 +215,20 @@ class Garden
204
215
  $seed = data
205
216
  if $seed.nil?
206
217
  command, data, clientport, clientname, clientaddr = socket_server_recv
207
- $seed = data
218
+ case command
219
+ when :sprout
220
+ $seed = data
221
+ when :init
222
+ command, data = socket_client_perm_duplex(:init_crop,$seed)
223
+ $seed = nil;
224
+ end
208
225
  end
209
226
  elsif $seed.include?(:success)
210
227
  command, data = socket_client_perm_duplex(:crop,$seed)
211
- $seed = nil
228
+ $seed = nil;
212
229
  else
213
230
  t1.run
214
231
  end
215
-
216
232
  end
217
233
  end
218
234
  t2.join
data/lib/gardener.rb CHANGED
@@ -48,7 +48,7 @@ class Gardener
48
48
  def init_status
49
49
  status = []
50
50
  @garden_rows.pids.each do |pid|
51
- command, data = socket_client_perm_duplex(:harvest,pid)
51
+ command, data = socket_client_perm_duplex(:init,pid)
52
52
  status << {:success => data[:success], :message => data[:message], :pid => data[:id]}
53
53
  end
54
54
  return status
data/lib/seed.rb CHANGED
@@ -11,7 +11,6 @@
11
11
  # :title:Seed
12
12
 
13
13
  class Seed
14
- $seed = Hash.new
15
14
  # The +new+ class method initializes the class.
16
15
  # You don't have to initialize it inside of Abundance,
17
16
  # as it gets initialized automatically inside the +Abundance.grow+ method
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.6
4
+ version: 1.0.7
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-12 00:00:00 -05:00
12
+ date: 2008-12-14 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15