diff options
-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 |