bin/console in kryten-0.2.1 vs bin/console in kryten-0.3.0
- old
+ new
@@ -4,14 +4,80 @@
require "kryten"
require "pry"
include Kryten
+class WorkList
+ include BackgroundTask
+end
+
class Work
+ include BackgroundTask
+ def run
+ work = rand(5)+1;
+ log "working for #{work}"
+ sleep work
+ log "done working"
+ end
+ def timer
+ 0.1
+ end
+end
+
+class ThreadedWork
include ThreadedTask
+ def run
+ work = rand(5)+1;
+ log "working for #{work}"
+ sleep work
+ log "done working"
+ end
+ def timer
+ 0.1
+ end
end
-w1 = Work.new('work1')
-w2 = Work.new('work2')
-w3 = Work.new('work3')
+work = WorkList.new('visor').workers do
+ [ Work.new('work1'),
+ Work.new('work2'),
+ Work.new('work3').workers do
+ [ Work.new('work3sub1'),
+ Work.new('work3sub2') ]
+ end ]
+end
+
+threaded_work = ThreadVisor.workers do
+ [ ThreadedWork.new('thread work1'),
+ ThreadedWork.new('thread work2'),
+ ThreadedWork.new('thread work3').workers do
+ [ ThreadedWork.new('thread work3sub1'),
+ ThreadedWork.new('thread work3sub2') ]
+ end ]
+end
+
+mixed_work = Work.new('mixy').mixed.workers do
+ [ Work.new('mixy 1 process').workers do
+ Work.new('mixy 1 subprocess')
+ end,
+ ThreadedWork.new('mixy 2 thread').workers do
+ ThreadedWork.new('mixy2 subthread')
+ end ]
+end
+
+class CrashWork
+ include BackgroundTask
+ def run
+ sleep rand(3) + 2
+ log 'working'
+ raise 'boom' if rand(5) == 0
+ end
+end
+
+crashing_work = CrashWork.new('crashy').workers do
+ [ Work.new('regular1'),
+ Work.new('regular2'),
+ CrashWork.new('crash3') ]
+end
+
binding.pry
+#w3.start