summaryrefslogtreecommitdiffstats
path: root/examples/board.rb
diff options
context:
space:
mode:
Diffstat (limited to 'examples/board.rb')
-rw-r--r--examples/board.rb24
1 files changed, 21 insertions, 3 deletions
diff --git a/examples/board.rb b/examples/board.rb
index b76679f..7ba7310 100644
--- a/examples/board.rb
+++ b/examples/board.rb
@@ -6,16 +6,29 @@
# run this script which builds the example system and spin it untill it's empty:
# $ ruby -Ilib examples/links.rb
#
+# or load the system from a JSON specification ( created with dom0.hibernate! )
+# $ ruby -Ilib bin/edoors.rb -r examples/board.rb examples/board.json
+#
+#
require 'edoors'
#
class FileReader < Edoors::Door
#
- def initialize n, p, path
+ def initialize n, p, path=nil
super n, p
- @file = File.open(path,'r')
+ @filepath = path unless path.nil?
+ end
+ #
+ def hibernate!
+ {'filepath'=>@filepath}
+ end
+ #
+ def resume! o
+ @filepath = o['filepath']
end
#
def start!
+ @file = File.open(@filepath,'r')
# stimulate myself on system boot up
send_p require_p(Edoors::Particle), Edoors::ACT_GET
end
@@ -32,7 +45,7 @@ class FileReader < Edoors::Door
# see Room#_send and Room#_try_links
send_p p
# stimulate myself
- start!
+ send_p require_p(Edoors::Particle), Edoors::ACT_GET
end
end
end
@@ -110,6 +123,11 @@ if $0 == __FILE__
# schedule the spinning particles untill the system cools down
dom0.spin!
#
+ # you can save the system state after it's run,
+ # but to be able to use it to bootstrap, the hibernation attribute must be set to false
+ # otherwise start! method is not called
+ # dom0.hibernate! 'board.json'
+ #
end
#
# EOF