require "../src/service" require "log" class MessageService < Service Log = ::Log.for(self) @@i = 0 getter message getter delay getter times def initialize(@message : String, @delay : Int32, @times : Int32) end def run(_unit : Unit) : Service::Unit? puts @message @@i += 1 Log.info { @@i } sleep @delay if @@i < @times Service::Unit.new(self) else Log.info { "Done." } nil end end end class Runner < Service::Runner def starters : Array(Service::Starter) [ Service::AsynchronousStarter.new([ MessageService.new("Hello world from AsynchronousStarter!", delay: 1, times: 5).as(Service), ]).as(Service::Starter), ] end end Runner.new.run