diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-11 22:55:28 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2012-06-11 22:55:28 +0200 | 
| commit | 784af2138ddf5477db5a23d1ddd948437a744b2f (patch) | |
| tree | 69829e59052b6cedaa5dd62d245b2f69e7c31c3b /examples | |
| parent | 1a3bfab4bc38a240d99083ec6f00e81abf5a489a (diff) | |
| download | edoors-ruby-784af2138ddf5477db5a23d1ddd948437a744b2f.zip edoors-ruby-784af2138ddf5477db5a23d1ddd948437a744b2f.tar.gz  | |
improve hello_world example
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/hello_world.rb | 37 | 
1 files changed, 29 insertions, 8 deletions
diff --git a/examples/hello_world.rb b/examples/hello_world.rb index 69befd4..db5bdb6 100644 --- a/examples/hello_world.rb +++ b/examples/hello_world.rb @@ -1,25 +1,39 @@  #! /usr/bin/env ruby  # -*- coding: UTF-8 -*-  # -# run from project top directory with : ruby -Ilib examples/hello_world.rb +# from the project top directory : +# +# run this script which builds the example system and spin it untill it's empty: +#   $ ruby -Ilib examples/hello_world.rb +# +# or load the system from a JSON specification ( created with spin.hibernate! ) +#   $ ruby -Ilib bin/edoors.rb -r examples/hello_world.rb examples/hello_world.json  #  require 'edoors'  #  class InputDoor < Edoors::Door      #      def start! -        # stimulate myself +        # stimulate myself on system boot up +        # if an action is set, but no destination is, it will be self. +        # see Door#_send          send_p require_p(Edoors::Particle), Edoors::ACT_GET      end      #      def receive_p p          if p.action==Edoors::ACT_GET +            # if desired (not needed here), call reset! to clear particle's data, +            # meaning merge particle, payload, destinations +            # see Particle#reset!              p.reset! +            # manipulate the particle's payload              p.set_data 'txt', "hello world" -            send_p p    # will follow the default link +            # will follow the non conditional link. +            # see Room#_send and Room#_try_links +            send_p p          else -            puts p.action -            # we can release it or let the Door do it +            # we can release it or let the Door do it. +            # see Door#process_p              release_p p          end      end @@ -29,21 +43,28 @@ end  class OutputDoor < Edoors::Door      #      def receive_p p -        puts p.get_data('txt') -        # let the door release it +        if p.action!=Edoors::ACT_ERROR +            puts p.get_data('txt') +        end +        # let the door release the particle +        # see Door#process_p      end      #  end  #  if $0 == __FILE__      # +    # This will schedule the particles and act as the top level Room      dom0 = Edoors::Spin.new 'dom0' +    # This will feed a receive particle with data and send it back      input = InputDoor.new 'input', dom0 +    # This will output the receive data and let the system recycle the particle      output = OutputDoor.new 'output', dom0 +    # This will be the unconditinal link leading from 'input' to 'output'      dom0.add_link Edoors::Link.new('input', 'output', nil, nil, nil)      # +    # schedule the spinning particles untill the system cools down      dom0.spin! -    dom0.hibernate!      #  end  #  | 
