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