diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-03 10:18:12 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-03 10:18:12 +0200 |
commit | 6e400f6016a8e335c8482a8ae1802c4a76662892 (patch) | |
tree | 1ae040e59456c8ce42b275b82b02823e95f53a2f | |
parent | d15d685884db41c7480f30c201d7303de8c55788 (diff) | |
download | edoors-ruby-6e400f6016a8e335c8482a8ae1802c4a76662892.zip edoors-ruby-6e400f6016a8e335c8482a8ae1802c4a76662892.tar.gz |
simplify Particle@dst life cycle
Partilce#dst_reached! is removed
Particle#init! set @dst=nil
Door#send_ calls Particle#set_dst if parameters are provided
-rw-r--r-- | lib/iotas/door.rb | 19 | ||||
-rw-r--r-- | lib/iotas/particle.rb | 9 | ||||
-rw-r--r-- | lib/iotas/spin.rb | 4 |
3 files changed, 16 insertions, 16 deletions
diff --git a/lib/iotas/door.rb b/lib/iotas/door.rb index 7d57b1c..da4f498 100644 --- a/lib/iotas/door.rb +++ b/lib/iotas/door.rb @@ -70,18 +70,21 @@ module Iotas @spin.release_p p end # - def send_p p, a=nil + def _send sys, p, a=nil, d=nil p.init! self - p.set_dst! a, self if a + p.set_dst! a, d||self if a @saved=nil if @saved==p # particle is sent back the data, all is good - @parent.send_p p # daddy will know what to do + # daddy will know what to do + sys ? @parent.send_sys_p(p) : @parent.send_p(p) end + private :_send # - def send_sys_p p, a=nil - p.init! self - p.set_dst! a, self if a - @saved=nil if @saved==p # particle is sent back the data, all is good - @parent.send_sys_p p # daddy will know what to do + def send_p p, a=nil, d=nil + _send false, p, a, d + end + # + def send_sys_p p, a=nil, d=nil + _send true, p, a, d end # end diff --git a/lib/iotas/particle.rb b/lib/iotas/particle.rb index 78975bf..295d505 100644 --- a/lib/iotas/particle.rb +++ b/lib/iotas/particle.rb @@ -75,6 +75,7 @@ module Iotas self.new o end # + # called when released def reset! @ts = @src = @dst = @room = @door = @action = @link_value = nil @dsts.clear @@ -83,7 +84,9 @@ module Iotas @merged.clear end # + # called when sent def init! src + @dst = nil @src = src @ts = Time.now end @@ -140,12 +143,6 @@ module Iotas @dsts.shift end # - def dst_reached! - d = @dst - @dst = nil - d - end - # def error! e, dst=nil @action = Iotas::ACT_ERROR @dst = dst||@src diff --git a/lib/iotas/spin.rb b/lib/iotas/spin.rb index bdf35bf..1f3c180 100644 --- a/lib/iotas/spin.rb +++ b/lib/iotas/spin.rb @@ -128,11 +128,11 @@ module Iotas while @run and (@sys_fifo.length>0 or @app_fifo.length>0) while @run and @sys_fifo.length>0 p = @sys_fifo.shift - p.dst_reached!.process_sys_p p + p.dst.process_sys_p p end while @run and @app_fifo.length>0 p = @app_fifo.shift - p.dst_reached!.process_p p + p.dst.process_p p break end end |